Doğru anladıysam aynı tablodan 4 satır veri döndürmek istiyorsunuz. Bu 4 veriden birinde sütun değerini siz veriyorsunuz ve ona göre satır gelmesini istiyorsunuz. Diğer 3 satırı ise girilen değerlere göre random getirmeyi istiyorsunuz.
Yazdığım sorgu max 4 satır döndürür.
UNION'dan öncesi sabit değeriniz içindir. Örnek vermek gerekirse "ad" sütununda "ahmet" değerini aratıp varsa o satırı çekmiş olursunuz.
UNION'dan sonrası ise max 3 değer döndürür. Örnek vermek gerekirse "ad" sütunundaki değeri "mehmet" olan satırlardan 3 tane random satır döndürmeye çalışır.
Yalnız önerdiğiniz çözüm çok sıkıntılı olmuş. 1 Milyon satırı olan tablonun gerçekten tamamını çekmek istemezsiniz. Nacizane önerim, söz konusu yapısal bir veritabanı olduğunda olabildiğince indexlerle çalışmanızdır.
(SELECT * FROM tableName WHERE columnName = $deger1 LIMIT 1)
UNION
(SELECT * FROM tableName WHERE columnName = $deger2 ORDER BY RAND() LIMIT 3)
Yazdığım sorgu max 4 satır döndürür.
UNION'dan öncesi sabit değeriniz içindir. Örnek vermek gerekirse "ad" sütununda "ahmet" değerini aratıp varsa o satırı çekmiş olursunuz.
UNION'dan sonrası ise max 3 değer döndürür. Örnek vermek gerekirse "ad" sütunundaki değeri "mehmet" olan satırlardan 3 tane random satır döndürmeye çalışır.
Yalnız önerdiğiniz çözüm çok sıkıntılı olmuş. 1 Milyon satırı olan tablonun gerçekten tamamını çekmek istemezsiniz. Nacizane önerim, söz konusu yapısal bir veritabanı olduğunda olabildiğince indexlerle çalışmanızdır.
Teşekkürler srhtycl sql tarafında biraz zayıfım geliştirmeye devam :)
Kimse cevap yazmayınca bişeyler karalamak istedim :)