2. A. Query berjenjang (Subquery)
Query berjenjang (Sub query) adalah sebuah perintah SELECT yang
berada di dalam perintah SQL lain.
B. Fungsi Query berjenjang (Sub query)
• Menyalin data dari satu tabel ke tabel yang lainnya.
• Menghapus baris dari satu tabel berdasarkan baris dari tabel lain.
• Mengambil data dari tabel lain untuk di update ke tabel yang
dituju.
• Untuk menyelesaikan persoalan dimana terdapat suatu nilai yang
tidak diketahui.
• Menerima data dari inline view.
3. Keberadaan subquery secara nyata mampu menyederhanakan
persoalan-persoalan rumit berkaitan query data.
Sebagai contoh misal terdapat pernyataan sebagai berikut:
“Dapatkan data mahasiswa yang alamatnya sama dengan mahasiswa
dengan nim 104”.
Secara normal, diperlukan dua tahapan untuk menyelesaikan kasus di
atas.
Pertama adalah mendapatkan alamat dari mahasiswa yang memiliki
nim 104. Langkah selanjutnya, baru kita bisa mengetahui data
mahasiswa yang alamatnya sama dengan mahasiswa dengan nim 104.
4. Sintak umum Sub Query :
SELECT …
Main Query FROM …
WHERE …
(SELECT …
FROM … Sub Query
WHERE …)
6. Contoh :
mysql> SELECT nama_peg, gaji FROM pegawai WHERE
gaji = (SELECT max(gaji) FROM pegawai);
Hasil :
Perintah ini hanya bisa menerima satu (1) buah hasil dari sub query, jika
hasil dari sub query ada lebih dari satu maka akan terjadi error.
7. Contoh :
mysql> select nama_peg, gaji from pegawai where
alamat_peg = (select alamat_peg
from pegawai where alamat_peg LIKE ‘J%');
Hasil :
Perintah ini hanya bisa menerima satu (1) buah hasil dari sub query, jika
hasil dari sub query ada lebih dari satu maka akan terjadi error.
8. Sub query dengan ALL
Command ALL diikuti dengan operator perbandingan digunakan memiliki arti
menampilkan nilai jika perbandingan bernilai benar untuk semua data. Contoh :
mysql> select nama_peg, gaji from pegawai where gaji <
ALL(select gaji FROM pegawai WHERE gaji > '2500000');
Contoh disamping menunjukkan penampilan atas
nama pegawai beserta gajinya yang memiliki gaji
kurang dari 2,5jt
9. Sub query dengan IN
Jika operator ‘=’ hanya digunakan untuk hasil yang tepat satu, maka jika ingin
menampilkan yang memiliki hasil lebih dari satu maka menggunakan perintah IN,
berikut contohnya :
Kita buat terlebih dahulu sebuah tabel yang menunjukkan hasil yang kita inginkan,
contoh tabel Job ini digunakan untuk menampilkan data yang hasil dari sub query
lebih dari satu.
10. Contoh :
mysql> select nip, nama_peg, jabatan from
pegawai where jabatan IN (select job from job);
Hasil :
Terlihat di dalam hasil bahwa, data
pegawai yang jabatannya ada di
dalam tabel job akan ditampilkan,
sedangkan yang tidak ada tidak akan
ditampilkan.
11. Tugas1 Basis data
Satu kelompok terdiri dari 5/5 anggota kelompok
1. Membuat database dengan tugas1basisdata.
2. Membuat tabel pegawai.
3. Membuat tabel job.
13. 5. Memasukkan data pada tabel job seperti berikut ini.
6. Menampilkan nilai gaji tertinggi pada tabel pegawai dengan
perintah sub query.
7. Dilanjutkan minggu depan.