Rabu, 15 Februari 2012

Menghitung Record di MySql

Halo, guys.
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 ? Yukk, liat..

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_siswa 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.

Selamat mencoba :D

5 komentar:

  1. kalo function di mysql buat nambahin field di query nya tau ngak kak?

    BalasHapus
    Balasan
    1. waaah, belum pernah nyoba sih, kalo bikin di mysql jelas gak bisa .. jadi kalo mau bikin function di php, java, atau lainnya trus connect di db mysql .. gitu ..

      Hapus
  2. kalau php yang menyesuaikan otomatis terhadap db mysql ada gak yah? mungkin funcion atau lainnya.

    BalasHapus
    Balasan
    1. kalo untuk mengarahkan ke database mana itu tetep harus pilih db nya dulu, jadi gak bisa otomatis dari php.
      tetep pake function select_db..

      Hapus