BASIS DATA
QUERY BERJENJANG (SUB QUERY)
Oleh :
I Ngr. Kd. Endra Dwi Putra, S.Kom
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.
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.
Sintak umum Sub Query :
SELECT …
Main Query FROM …
WHERE …
(SELECT …
FROM … Sub Query
WHERE …)
Perhatikan record atau data pada
tabel gaji di samping.
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.
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.
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
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.
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.
Tugas1 Basis data
Satu kelompok terdiri dari 5/5 anggota kelompok
1. Membuat database dengan tugas1basisdata.
2. Membuat tabel pegawai.
3. Membuat tabel job.
4. Memasukkan data pada tabel pegawai seperti berikut ini.
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.

Materi SQL Query Berjenjang

  • 1.
    BASIS DATA QUERY BERJENJANG(SUB QUERY) Oleh : I Ngr. Kd. Endra Dwi Putra, S.Kom
  • 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 secaranyata 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 SubQuery : SELECT … Main Query FROM … WHERE … (SELECT … FROM … Sub Query WHERE …)
  • 5.
    Perhatikan record ataudata pada tabel gaji di samping.
  • 6.
    Contoh : mysql> SELECTnama_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> selectnama_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 denganALL 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 denganIN 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> selectnip, 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 Satukelompok terdiri dari 5/5 anggota kelompok 1. Membuat database dengan tugas1basisdata. 2. Membuat tabel pegawai. 3. Membuat tabel job.
  • 12.
    4. Memasukkan datapada tabel pegawai seperti berikut ini.
  • 13.
    5. Memasukkan datapada tabel job seperti berikut ini. 6. Menampilkan nilai gaji tertinggi pada tabel pegawai dengan perintah sub query. 7. Dilanjutkan minggu depan.