0% menganggap dokumen ini bermanfaat (0 suara)
15 tayangan5 halaman

Modul 7 - HAVING, LIMIT

Dokumen tersebut memberikan penjelasan tentang pengurutan data berdasarkan tanggal terbit dan judul menggunakan MySQL. Juga dijelaskan penggunaan klausa HAVING, LIMIT, dan OFFSET untuk membatasi dan mengambil data secara terbatas.

Diunggah oleh

naylaaa
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
15 tayangan5 halaman

Modul 7 - HAVING, LIMIT

Dokumen tersebut memberikan penjelasan tentang pengurutan data berdasarkan tanggal terbit dan judul menggunakan MySQL. Juga dijelaskan penggunaan klausa HAVING, LIMIT, dan OFFSET untuk membatasi dan mengambil data secara terbatas.

Diunggah oleh

naylaaa
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 5

Hasil:

+---------+-----------------------------------------+------------+
| 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:

Pada contoh diatas, setelah MySQL mengurutkan data berdasarkan tanggal


terbit secara descending, selanjutnya, karena terdapat data dengan
tgl_terbit yang sama, yaitu pada id_buku 1 dan 2, maka data akan
diurutkan lagi berdasarkan kolom judul. Jika pada kolom pertama tidak
ada data yang sama, maka tidak dilakukan pengurutan pada kolom kedua,
misal:

1. SELECT id_buku, judul, tgl_terbit


2. FROM buku1
3. WHERE id_penerbit = 4
4. ORDER BY tgl_terbit DESC, judul DESC

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

Panduan Lengkap Query MySQL 117


maupun kolom alias. Hal ini dikarenakan klausa HAVING dijalankan
setelah statemen SELECT, sehingga semua nama kolom (termasuk
kolom alias) telah selesai terbaca, sedangkan klausa WHERE dijalankan
sebelum statemen SELECT.

2. Klausa HAVING dapat dijalankan setelah klausa GROUP BY sedangkan


WHERE tidak. Pada query yang kompleks dengan banyak fungsi
agregasi, klausa having ini sangat bermanfaat untuk memfilter data
yang ingin ditampilkan.

Berikut ini berbagai contoh query menggunakan klausa HAVING

Contoh 1: Klausa HAVING sederhana

1. SELECT judul, tgl_terbit


2. FROM buku1
3. HAVING tgl_terbit >= "2016-00-00" AND judul LIKE "%php%"

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.

Contoh 2: Aritmetika Pada Kolom

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

118 BAB 8 Syntax Dasar Pengambilan Data


5. FROM buku1
6. HAVING harga_diskon > 50000

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.

Contoh 3: klausa HAVING setelah GROUP BY

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

1. SELECT id_penerbit, COUNT(judul) AS jumlah_buku


2. FROM buku1
3. GROUP BY id_penerbit
4. HAVING jumlah_buku < 3

Hasil:
+-------------+-------------+
| id_penerbit | jumlah_buku |

Panduan Lengkap Query MySQL 119


+-------------+-------------+
| 4 | 2 |
+-------------+-------------+

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.

Contoh kita ambil 3 data buku terbaru:

1. SELECT judul, tgl_terbit


2. FROM buku
3. WHERE id_penerbit = 1
4. ORDER BY tgl_terbit DESC, judul ASC
5. LIMIT 3

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, MySQL akan mengambil semua data, kemudian


mengurutkannya secara descending berdasarkan tanggal terbit, kemudian
mengambil 3 baris teratas.

120 BAB 8 Syntax Dasar Pengambilan Data


Lebih lanjut, MySQL juga menyediakan opsi untuk mengambil sejumlah
data tertentu yang dimulai dari baris/posisi tertentu, posisi ini dinamakan
offset. Fitur ini sering digunakan untuk keperluan pagination. Sebagai
contoh, melanjutkan query sebelumnya, kali ini kita tampilkan 5 data
berikutnya:

1. SELECT judul, tgl_terbit


2. FROM buku
3. WHERE id_penerbit = 1
4. ORDER BY tgl_terbit DESC, judul ASC
5. LIMIT 3, 5

Perhatikan bahwa ketika kita menggunakan offset, maka parameter


pertama bukan jumlah baris yang ingin diambil tetapi baris ke berapa yang
ingin diambil kemudian baru dilanjutkan jumlah baris yang ingin diambil.

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.

Perhatikan urutan penulisan keyword, terutama posisi penulisan ORDER


BY. Ketika ditulis bersamaan dengan klausa WHERE dan LIMIT, maka klausa
ORDER BY harus ditulis setelah klausa WHERE dan sebelum klausa LIMIT,
agar mudah diingat, bahwa operasi bersifat umum ke spesifik. Pada contoh
diatas:

 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)

 Selanjutnya, temporary tabel tersebut akan diurutkan sesuai dengan


tanggal terbit dan judul (klausa ORDER BY)

 Setelah diurutkan, MySQL akan mengambil 3 data pertama untuk


ditampilkan ke user (klausa LIMIT)

Dari urutan diatas terlihat bahwa MySQL mengerjakannya dari umum


(WHERE) ke spesifik (ORDER BY), kemudian LIMIT.

Panduan Lengkap Query MySQL 121

Anda mungkin juga menyukai