Sering kali kita memerlukan jumlah data/record yang kita miliki dalam satu table untuk berbagai keperluan, misal untuk keperluan paging, untuk kebutuhan reporting, dan lain-lain. Nah, cara gimana akan saya jelaskan dibawah ini.
Contoh :
tbl_mhs
id_mhs | Nama | tahun_masuk |
1 | Charles | 2004 |
2 | Susi | 2003 |
3 | Liliana | 2004 |
4 | Joko | 2004 |
5 | Merry | 2007 |
Kita dapat menggunakan fungsi count( nama field ) yang dimiliki oleh MySql . Fungsi count ini digunakan untuk menghitung jumlah baris sesuai dengan kondisi dalam query kita. Misalkan sekarang saya mau menghitung jumlah mahasiswa yang tahun_masuknya 2007, maka dapat menggunakan query :
SELECT count(id_mhs) FROM tbl_mhs WHERE tahun_masuk='2007'; |
Nah, cara di atas adalah cara sederhana untuk menghitung jumlah record. Sekarang akan saya jelaskan untuk kasus paging , biasanya untuk pertama kali kita lakukan 'select' data terlebih dahulu yang mana datanya untuk ditampilkan pada halaman website, setelah itu kita cari total record di database untuk keperluan generate link paging halaman,contoh seperti query dibawah ini :
query 1 : select * from tbl_mhs where tahun_masuk>=2004 limit 10,2;
query 2 : select count(id_mhs) from tbl_mhs where tahun_masuk>=2004;
Pertama kita lakukan select data dengan limit sesuai sistem paging masing-masing ( ini dilakukan biasanya untuk mendapatkan record-record untuk ditampilkan ke halaman website), kemudian diperlukan data total record yang dimiliki table (tanpa limit) tetapi memiliki kondisi(where) yang sama, maka dilakukan query kedua. Cara ini bisa dilakukan tapi menurut saya kurang efektif karena kita melakukan statement pengambilan data ke table sebanyak 2x. Nah, ada cara supaya lebih efektif, yaitu :
query 1 :
SELECT SQL_CALC_FOUND_ROWS * FROM tbl
_mhs where tahun_masuk>=2004 limit 10,2;query 2 :
SELECT FOUND_ROWS();
Dengan menambahkan
SQL_CALC_FOUND_ROWS
setelah 'select'
maka kita bisa mendapatkan total record yang ada di dalam table di luar
limit yang diberikan pada query 1. Hanya dengan memanggil query kedua
(yg menggunakan perintah FOUND_ROWS()
) , kita bisa mendapatkan total record tanpa harus melakukan statement pengambilan data ulang dan diberi perintah count. Dari contoh table di atas , maka perintah FOUND_ROWS()
akan mengembalikan angka 4 (record yang memiliki tahun_masuk lebih
besar sama dengan 2004 ada 4 record), walaupun pada query 1 menggunakan limit 10,2. Mudah-mudahan tips ini berguna .