Modul #5 - Subquery Ver2
Modul #5 - Subquery Ver2
Basis Data
Subquery
#5
Halo teman-teman. Saya harap kalian masih betah belajar Basis Data ya. Kali
ini kita akan belajar SQL yang lebih expert dan spektakuler deh pokoknya. Apa
itu ?? sebelum mulai mari kita buat database dan tabel dibawah ini dulu…
-Tabel Pelayan
-Tabel Pelanggan
-Tabel Pemesanan
Kemudian isi para tabel diatas dengan:
-Isi Tabel Menu
Contoh : “Select *from menu where harga =(select max(harga) from menu);”.
- Single row
- Multiple row
- Multiple column
A. Single Row Subquery
Single row subquery memberikan hasil hanya satu baris pada bagian
subquerynya. Operator pembanding yang digunakan untuk single row subquery
ini antara lain : =, >, <, >=, <= atau <>.
Contoh Kasus:
Tampilkan tabel pelayan yang memiliki alamat yang sama dengan pelayan „Rabihi Fauzan‟.
Query:
select *
from pelayan
where alamat =
(select alamat from pelayan where nama_pelayan='Rabihi
Fauzan');
Outer Query:
select *
from pelayan
where alamat = (subquery)
Subquery:
a. Operasi IN
Query:
select *
from pelanggan
where id_pelanggan in
(select id_pelanggan from pemesanan);
Outer Query:
select *
from pelanggan
where id_pelanggan in (subquery)
Subquery:
Hasil:
b. Operasi ANY
Operator ANY memiliki arti: membandingkan suatu nilai dengan setiap nilai
yang dikembalikan oleh subquery.
Contoh Kasus:
Tampilkan tabel pemesanan memiliki tanggal pesan sebelum pemesanan yang
dilakukan oleh pelanggan dengan id=2.
Query:
select *
from pemesanan
where tgl_pesan < any
(select tgl_pesan from pemesanan where id_pelanggan=2);
Outer Query:
select *
from pemesanan
where tgl_pesan < any (subquery);
Subquery:
Hasil:
Operator ALL memiliki arti: membandingkan suatu nilai dengan semua nilai yang
dikembalikan oleh subquery.
Contoh Kasus:
Tampilkan tabel pemesanan yang memiliki total harga kurang dari total harga pelanggan
yang memiliki id=4.
Query:
select *
from pemesanan
where total < all
(select total from pemesanan where id_pelanggan=4);
Outer Query:
select *
from pemesanan
where total < all (subquery);
Subquery:
Hasil:
C. Multiple Column Subquery
Memungkinkan membandingkan banyak kolom dengan menuliskan field-
field yang akan dicocokan dalam sebuah tanda kurung. Operator yang
digunakan IN, ANY, ALL, EXISTS, NOT EXISTS.
Contoh Kasus:
Tampilkan tabel pemesanan yang memiliki id_menu dan id_pelayan yang memiliki id_menu
dan id_pelayan dari pelanggan yang memiliki id=6.
Query:
select *
from pemesanan
where (id_menu, id_pelayan) IN
(select id_menu, id_pelayan from pemesanan where id_pelanggan=6);
Outer Query:
select *
from pemesanan
where (id_menu, id_pelayan) IN (subquery);
Subquery:
Hasil:
a. Operator EXISTS dan NOT EXISTS
Operator EXISTS dan NOT EXISTS digunakan pada Correlated Subquery untuk memeriksa
apakah subquery mengembalikan hasil atau tidak. APabila subquery mengembalikan hasil,
EXISTS akan mengembalikan nilai true. Begitu pula sebaliknya, jika false maka tidak
mengembalikan nilai.
Contoh Query:
select *
from menu
where exists
(select * from pemesanan where menu.id_menu=pemesanan.id_menu);
Query diatas akan menyeleksi tabel menu yang id_menu nya beririsan dengan tabel
pemesanan.
Hasil:
select *
from menu
where not exists
(select * from pemesanan where menu.id_menu=pemesanan.id_menu);
Kemudian query diatas adalah komplemen dari query sebelumnya dengan memakai operator
NOT.
Hasil:
D. Subquery dengan Having (Aggregasi)
Subquery dengan memakai having akan menghasilkan hanya satu baris (Single
Row) dengan operator pembanding =,<,<=,>,>=,<>.
Contoh Kasus:
Tampilkan tabel pemesanan yang memiliki total harga dibawah rata-rata.
Query:
select *
from pemesanan
where total <
(select avg(total) from pemesanan);
Outer Query:
select *
from pemesanan
where total < (subquery);
Subquery:
Hasil:
LATIHAN
==================================================================
“Hidup ini adalah pilihan, jika kau tak memilih, maka itu pilihanmu.”
- Monkey D. Luffy
…. quote apa ini ???
============================= \\ // =============================