5. Simpan gadjet Copyright: Blog Trik dan Tips - http://blogtrikdantips.blogspot.com/2012/09/ada-yang-lapar-gak-kalau-makan-mie.html#ixzz2DouD43WU Tolong sertakan link ini jika mengkopi artikel diatas. Terima kasih

Jumat, 18 Januari 2013

SUBQUERY


Subquery
Masih menggunakan Database Kepegawaian [2] dan masih melanjutkan artikel tentang Query Kepegawaian, sekarang kita akan membahas tentang Subquery yang kadang kala juga disebut subselect yaitu merupakan bentuk query yang terletak dalam query yang lain.
SELECT NIP, Gaji FROM Pekerjaan WHERE gaji = ( SELECT MAX( gaji ) FROM Pekerjaan ) ;

1. Operator IN dalam Subquery
SELECT Nama FROM Pribadi WHERE Nip IN ( SELECT DISTINCT Nip FROM pribadi );
bandingkan dengan

SELECT Nama FROM Pribadi WHERE Nip NOT IN ( SELECT DISTINCT Nip FROM pribadi ) ;

2. Operator EXISTS
EXISTS merupakan jenis operator boolean, yang menghasilkan nilai benar atau salah
Bentuk penggunaan:
SELECT nama_kolom FROM nama_tabel WHERE EXISTS (subquery);

SELECT nip, kode_bag FROM pekerjaan
WHERE EXISTS ( SELECT * FROM bagian WHERE kode_bag = pekerjaan.kode_bag ) ;

3. Operator ALL
Operator ALL digunakan untuk melakukan pembandingan dengan subquery. Kondisi dengan ALL menghasilkan nilai benar jika jika pembandingan menghasilkan benar untuk setiap nilai dalam subquery
Contoh untuk memperoleh semua pegawai yang gajinya lebih rendah daripada semua pegawai di departemen Akuntansi (kode_bag = ‘3’):

SELECT nip, gaji, kode_bag FROM pekerjaan
WHERE gaji < ALL ( SELECT gaji FROM pekerjaan WHERE kode_bag = '3' ) ;

4. Ekspresi CASE
SELECT nip, kode_bag,
CASE WHEN kode_bag = ( SELECT kode_bag FROM bagian
WHERE nama_bag = 'Produksi' )
THEN 'Produksi' ELSE 'Non-Produksi' END AS 'produksi?'
FROM pekerjaan;

5. Subquery pada Klausa SELECT
SELECT nip, ( SELECT nama_bag FROM bagian WHERE kode_bag = pekerjaan.kode_bag )
AS 'nama bagian' FROM pekerjaan;

6. Subquery menggunakan ORDER BY
SELECT nip, nama FROM pribadi
ORDER BY ( SELECT kode_bag FROM pekerjaan WHERE nip = pribadi.nip ) ;

7. Subquery Berkorelasi
Subquery berkorelasi (correlated subquery) adalah subquery yang melibatkan suatu pengacuan ke tabel yang terdapat pada query induk

SELECT nip, kode_bag FROM pekerjaan
WHERE NOT EXISTS ( SELECT * FROM bagian WHERE kode_bag = pekerjaan.kode_bag );

8. Subquery pada HAVING
Subquery juga bisa diletakkan dalam klausa HAVING
SELECT kode_bag, SUM( gaji ) FROM pekerjaan p1
GROUP BY kode_bag
HAVING 1 < ( SELECT COUNT( * ) FROM pekerjaan p2 WHERE p1.kode_bag = p2.kode_bag ) ;

Tidak ada komentar:

Posting Komentar