Web Geliştirici  :: PHP, JavaScript, Ajax, XHTML, XML, CSS, MySQL ve diğer web yazılım geliştirme teknolojileri hakkında faydalı bilgi ve teknikler
 

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.

   

Yorum Kısımı

(varsa)