Modul 7 - HAVING, LIMIT
Modul 7 - HAVING, LIMIT
+---------+-----------------------------------------+------------+
| id_buku | judul | tgl_terbit |
+---------+-----------------------------------------+------------+
| 1 | Pemrograman Database Menggunakan MySQL | 2016-00-00 |
| 2 | PHP dan MySQL Langkah Demi Langkah + CD | 2016-00-00 |
| 5 | Mahir Dalam 7 Hari: Coreldraw X6 | 2013-00-00 |
+---------+-----------------------------------------+------------+
Penjelasan:
Hasil:
+---------+------------------------------------+------------+
| id_buku | judul | tgl_terbit |
+---------+------------------------------------+------------+
| 4 | Kumpulan Aplikasi PHP untuk Pemula | 2016-02-25 |
| 3 | MySQL Untuk Pemula | 2014-11-28 |
+---------+------------------------------------+------------+
Pada contoh diatas, karena tidak ada data tgl_terbit yang sama, maka tidak
dilakukan pengurutan pada kolom judul.
8.7. HAVING
Sebelumnya, kita telah membahas tentang klausa WHERE, nah, klausa
HAVING ini sama seperti klausa WHERE, bedanya:
1. Klausa WHERE hanya dapat digunakan pada kolom riil pada tabel,
sedangkan klausa HAVING dapat digunakan baik kolom riil tabel
Hasil:
+-----------------------------------------+------------+
| judul | tgl_terbit |
+-----------------------------------------+------------+
| PHP dan MySQL Langkah Demi Langkah + CD | 2016-00-00 |
| Kumpulan Aplikasi PHP untuk Pemula | 2016-02-25 |
+-----------------------------------------+------------+
Pada query diatas, klausa HAVING dapat diganti dengan klausa WHERE,
keduanya akan menghasilkan output yang sama.
Pada contoh kali ini, kita akan menampilkan judul buku, harga, nilai diskon
( 10% dari harga buku ), dan harga buku setelah diskon. Selanjutnya,
dengan klausa HAVING kita ambil data buku yang memiliki harga setelah
diskon diatas 50.000, querynya adalah:
1. SELECT judul,
2. harga,
3. ROUND(0.1 * harga) AS diskon,
4. harga - ROUND(harga * 0.1) AS harga_diskon
Hasil:
+-----------------------------------------+-------+--------+--------------+
| judul | harga | diskon | harga_diskon |
+-----------------------------------------+-------+--------+--------------+
| Pemrograman Database Menggunakan MySQL | 59000 | 5900 | 53100 |
| PHP dan MySQL Langkah Demi Langkah + CD | 75000 | 7500 | 67500 |
| Mahir Dalam 7 Hari: Coreldraw X6 | 68000 | 6800 | 61200 |
+-----------------------------------------+-------+--------+--------------+
Pada contoh diatas klausa HAVING diterapkan pada kolom alias yaitu
harga_diskon, jika menggunakan klausa WHERE maka query akan
berbentuk seperti berikut:
1. SELECT judul,
2. harga,
3. ROUND(0.1 * harga) AS diskon,
4. harga - ROUND(harga * 0.1) AS harga_diskon
5. FROM buku1
6. WHERE harga - ROUND(harga * 0.1) > 50000
Pada contoh diatas terlihat bahwa pada klausa WHERE kita harus menulis
ulang formula penghitungan harga_diskon, hal ini karena klausa WHERE
tidak mengenali kolom alias.
Seperti pembahasan kita tentang klausa GROUP BY, kali ini kita akan
mengambil data jumlah buku yang dikelompokkan berdasarkan
id_penerbit, namun dengan jumlah buku kurang dari 3
Hasil:
+-------------+-------------+
| id_penerbit | jumlah_buku |
Pada query diatas, kita menggunakan kolom alias pada having, jika
menggunakan nama kolom, klausa having dapat kita ubah menjadi HAVING
COUNT(judul) < 3. Karena dijalankan setelah klausa GROUP BY, maka kita
tidak dapat mengganti HAVING dengan WHERE
8.8. LIMIT
Sejauh ini, kita telah berhasil menampilkan data berdasarkan kriteria
tertentu menggunakan klausa WHERE, namun, data yang ditampilkan tidak
terbatas, semuanya ditampilkan. Untuk keperluan tertentu, kita perlu
untuk membatasi banyaknya data yang diambil, misal menampilkan 10
buku terbaru. Untuk keperluan tersebut, kita gunakan klausa LIMIT.
Perhatikan bahwa kali ini kita menggunakan tabel buku, bukan buku1.
Tabel ini berisi lebih banyak data, tabel ini telah disertakan pada file SQL
buku ini. Hasil yang kita peroleh:
+-----------------------------------------+------------+
| judul | tgl_terbit |
+-----------------------------------------+------------+
| Pemrograman Database Menggunakan MySQL | 2016-00-00 |
| Pemrograman PHP Dan MySQL Untuk Pemula | 2016-00-00 |
| PHP dan MySQL Langkah Demi Langkah + CD | 2016-00-00 |
+-----------------------------------------+------------+
Pada contoh diatas, untuk mengambil data mulai baris ke-4, kita
menggunakan offset 3 bukan 4, karena index baris dimulai dari 0
(0,1,2,3…), sehingga, baris ke 4 bernilai 3.
MySQL akan memfilter data sehingga yang diambil adalah data buku
dengan id_penerbit 1, kemudian, MySQL menyimpan data tersebut ke
dalam temporary tabel (klausa WHERE)