Rabu, 07 Januari 2009

Menghitung Total Record Dengan MYSQL

Menghitung total record di MySql
<< back


Post at Thu, October 09, 2008 02:23:48 PM


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';
count(id_mhs) => sebenarnya tidak harus menggunakan id_mhs, kita dapat menggunakan field lain, yang penting ada field yang digunakan untuk dihitung, atau bisa juga menggunakan count(*).

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 .

Tidak ada komentar:

Poskan Komentar