Materi 11 : Subquery pada Mysql

Subquery pada Mysql 

Subquery pada MySQL adalah sebuah query yang diletakkan di dalam query utama dan digunakan untuk mengambil data yang diperlukan untuk menjalankan query utama. Subquery dapat digunakan dalam berbagai jenis pernyataan SQL seperti SELECT, INSERT, UPDATE, dan DELETE.

Subquery pada MySQL dapat dituliskan dalam dua cara, yaitu subquery bersarang atau subquery bersama. Subquery bersarang adalah subquery yang terdapat di dalam subquery lainnya, sedangkan subquery bersama adalah subquery yang dituliskan pada bagian FROM clause pada query utama.

Contoh penggunaan subquery pada MySQL:

SELECT nama FROM pelanggan WHERE id IN (SELECT id_pelanggan FROM pesanan WHERE tanggal = '2023-03-16')

Query di atas menggunakan subquery untuk mencari pelanggan yang melakukan pesanan pada tanggal tertentu.

Pada umumnya, subquery digunakan untuk mengambil data dari satu atau beberapa tabel terkait yang digunakan sebagai filter atau kriteria untuk menjalankan query utama. Subquery dapat menjadi alat yang sangat berguna untuk melakukan operasi kompleks pada data dengan menggunakan query sederhana.


contoh kasus subquery :

Mencari data berdasarkan kriteria pada tabel lain

Misalkan kita memiliki tabel "produk" dan "pesanan", dan kita ingin mencari produk yang pernah dipesan pada hari tertentu. Dalam kasus ini, kita dapat menggunakan subquery untuk mencari id produk dari tabel pesanan berdasarkan tanggal, dan kemudian menggunakan id tersebut untuk mengambil informasi produk dari tabel produk.

SELECT nama_produk, harga FROM produk WHERE id IN (SELECT id_produk FROM pesanan WHERE tanggal = '2023-03-16')

Mencari data dengan agregat

Misalkan kita memiliki tabel "produk" dan "ulasan", dan kita ingin mencari produk yang memiliki rata-rata ulasan di atas 4. Dalam kasus ini, kita dapat menggunakan subquery untuk menghitung rata-rata ulasan untuk setiap produk dan kemudian memfilter hasil berdasarkan kriteria.

SELECT nama_produk, harga FROM produk WHERE id IN (SELECT id_produk FROM ulasan GROUP BY id_produk HAVING AVG(nilai) > 4)

Menggunakan subquery bersama (inline view)

Misalkan kita memiliki tabel "pesanan" dan "pelanggan", dan kita ingin mencari pelanggan yang memiliki jumlah pesanan di atas rata-rata. Dalam kasus ini, kita dapat menggunakan subquery bersama untuk menghitung rata-rata jumlah pesanan dan kemudian memfilter hasil dari tabel pelanggan.

SELECT nama FROM pelanggan, (SELECT AVG(jumlah) AS rata_jumlah FROM pesanan) AS avg_pesanan WHERE (SELECT COUNT(*) FROM pesanan WHERE id_pelanggan = pelanggan.id) > avg_pesanan.rata_jumlah

Pada contoh ini, subquery bersama (inline view) digunakan untuk menghitung rata-rata jumlah pesanan. Kemudian, subquery di dalam WHERE clause digunakan untuk menghitung jumlah pesanan untuk setiap pelanggan dan membandingkannya dengan rata-rata.


sekian semoga bermanfaa

Post a Comment for "Materi 11 : Subquery pada Mysql "