Limitli Bir Sorgunun Limitsiz Halinin Sonuç Sayısını Bulmak
SQL’de bir sorgunun döndüreceği sonuç sayısı limit eki ile sınırlandırılır. Özellikle sayfalama yaparken bunu çok sık kullanırız. Örneğin
SELECT * FROM tablo WHERE id > 100 LIMIT 10
sorgusu bize şarta uyan ilk 10 kaydı getirecektir. Peki ama limit koymasaydık toplam kaç kayıt gelecekti? Toplam kayıt sayısını bulmak için aklımıza gelen ilk yol aynı sorguyu limitsiz olarak ikinci sefer işletmektir. Bunun yerine MySQL’in SQL_CALC_FOUND_ROWS ifadesi böyle bir durumda bizi ikinci bir sorgu işletmekten kurtarıyor.
SELECT SQL_CALC_FOUND_ROWS * FROM tablo WHERE id > 100 LIMIT 10
Yukarıdaki sorgunun limitsiz halinin sonuç sayısını bulmak için aşağıdaki yöntemi kullanıyoruz.
$toplam_kayit_sayisi_s = mysql_query(" SELECT FOUND_ROWS() AS adet "); $toplam_kayit_sayisi_fa = mysql_fetch_array($toplam_kayit_sayisi_s, MYSQL_ASSOC); $toplam_kayit_sayisi = $toplam_kayit_sayisi_fa['adet'];
Böylece yeni bir sorgu işletmeden toplam kayıt sayısını elde etmiş oluruz. Yukarıdaki işlemler, kendisinden önce SQL_CALC_FOUND_ROWS ifadesi geçen en sonuncu sorgu için uygulanacaktır.



