Misal ada sebuah kondisi dimana kita harus mencari karyawan yang tinggal di kota yang sama dengan Managernya yang bernama Ali. Bagaimana kita menyelesaikan masalah ini? yang pertama kita lakukan, kita harus mencari terlebih dahulu kota tempat tinggal si Ali. Dari hasil pencarian tersebut, misal di Surabaya, kita cari seluruh karyawan yang tinggal di Surabaya. Perhatikan query untuk langkah pertama berikut ini:
SELECT kota FROM Karyawan
WHERE nama=’Ali’;
Misal hasilnya adalah Surabaya, maka query untuk langkah kedua adalah:
SELECT nama FROM Karyawan
WHERE kota=’Surabaya’;
Karena adanya persamaan nilai antara hasil (query 1) dan kondisi (query 2), maka ita bisa melakukan penggabungan query. Perhatikan hasilnya berikut ini:
SELECT nama FROM Karyawan
WHERE kota = (SELECT kota FROM Karyawan WHERE nama=’Ali’);
Inilah yang disebut sebagai subquerying. Lebih tepatnya, yang disebut sebagai subquery adalah inner query (query 1), sedangkan main query adalah outer query-nya (query 2). Ada beberapa hal yang perlu diperhatikan dalam subquery, yaitu:
- Subquery digunakan untuk mencari nilai yang belum diketahui
- Hanya satu kolom yang digunakan dalam subquery yang nantinya digunakan sebagai kondisi dalam outer query.
- Subquery dibatasi oleh hasil yang dikembalikan, berupa skalar atau kumpulan nilai. Hasil ini nantinya yang menentukan operator pembanding apa yang akan digunakan pada outer query.
- Karena batasan tersebut, ada 2 macam subquery yaitu (1) single row subquery, dan (2) multiple row subquery.
- Semua jenis operator pembanding dapat digunakan untuk subquery.
- Data yang dikembalikan oleh subquery harus kompatibel dengan yang dipakai oleh outer query.
Contoh penggunaan query sebelumnya adalah single-row subquery. Untuk multiple-row subquery, kita menggunakan IN sebagai operator pembanding antara kondisi pada main query dengan hasil dari subquery. Selain itu, kita bisa melakukan nesting dalam subquery, yaitu subquery dalam subquery, atau subquery berlapis. Masing-masing database provider mempunyai aturan mengenai kemampuan dan jumlah nesting-nya.
Semoga bermanfaat.