Mengenal Subquery

~ Pengertian Subquery
   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 :

    SELECT MAX (gaji)
    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)

7 Responses to "Mengenal Subquery"

click duit