Subquery (kadangkala juga di sebut subselect) merupakan bentuk query yang terletak dalam query yang lain. Contoh subquery diperlihatkan
di bawah ini :
SELECT *
FROM pegawai
WHERE gaji =
( SELECT MAX (gaji )
FROM pegawai);
Perhatikan bahwa di dalam klausa WHERE milik SELECT terdapat SELECT yang lain, yaitu :
SELECT MAX (gaji )
FROM pegawai
Bagian inilah yang di sebut dengan subquery .
Yang mungkin menjadi pertanyaan bagi ANda, "Apa sebenarnya maksud pertanyaan di atas?". Untuk memahaminya, akan lebih mudah jika Anda mengerti SELECT yang berada dalam klausa WHERE terlebih dahulu.
Sebagaimana Anda telah pelajari
SELECT MAX (gaji)
FROM pegawai
digunakan untuk menampilkan baris-baris yang nilai gaji-nya adalah besar. Hasil query ini berupa seperti berikut :
SELECT *
FROM pegawai
WHERE gaji =
( SELECT MAX (gaji )
FROM pegawai);
nama_pegawai | gaji
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ - - - - - - -
John Simatupang | 3600000
2 . Operator IN
Pada contoh di depan, subquery :
FROM pegawai
menghasilkan sebuah nilai. Keadaan seperti ini bukanlah merupakan suatu keharusan. Subquery bisa saja menghasilkan sejumlah nilai. Sebagi contoh, Perhatikan query berikut :
SELECT DISTINCT id_bin
FROM main ;
Query ini akan menghasilkan sejumlah baris yang menyatakan semua id_bin yang terdapat pada main dan bersifat unik (tak ada yang kembar).
Hasilnya sebagaimana di perlihatkan di bawah ini .
id_bin
- - - - - - - -
CINDY
DEMIM
DREWB
HAKIM
JULIA
KEANU
KEVIN
RGERE
SANDR
STONE
SYLVE
(11 rows)
Query yang menghasilkan sejumlah nilai seperti itu dapat berkedudukan sebagai subquery dan di letakan sesudah operator IN.
Contoh :
SELECT nama FROM infoprib
WHERE id_bin IN
(SELECT DISTINCT id_bin
FROM main);
Query di atas di gunakan untuk menampilkan semua bintan film yang id_bintang nya berada dalam tabel main.
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Operator IN menghasilkan nilai benar kalau nilai yang berada di kiri
| cocok dengan salah satu yang ada dalam daftar nilai di kananya.
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ __
Hasil query di atas di perhatikan pada artikel berikut.
nama
- - - - - - - - - - - - - - - - - - - - - -- - -
Drew Barrymore
Sharon Stone
Sylvester Stallone
Kevin Costner
Christine Hakim
Julia Roberts
Demi Moore
Cindy Crawford
Keanu Reeves
Sandra Bullock
Richard Gere
(11 rows)
Anda juga bisa meletakan NOT di depan IN, misanlnya seperti berikut :
SELECT nama FROM infoprib
WHERE id_bin NOT IN
( SELECT DISTINCT id_bin
FROM main ) ;
Query di atas akan menghasilkan daftar bintang film yang tidak tercantum pada tabel main.
nama
- - - - - - - - - - - - - - - - - - - - - - - - -
Cameron Diaz
Slamet Rahardjo
Kelly McGillis
Angelina Jolie
(4 rows)
kurang paham gan!!!
ReplyDeletekurang paham gan ntar ada artikel lanjutan
ReplyDeletepusing juga ternyata ya, pelajaran kelas berapa ini gan
ReplyDeleteoke gan terima kasih
ReplyDeletenice gan
ReplyDeleteoke avita
ReplyDeletekeren gan pelajaran kelas berapa noh
ReplyDeletejangan lupa kunbal ya gan :) ditunggu