Home database Pengertian dan Contoh SUBQUERY pada MYSQL / ORACLE

Pengertian dan Contoh SUBQUERY pada MYSQL / ORACLE

 

Subquery merupakan suatu query seperti halnya query biasa yang berjalan di dalam query induk / master. Sub query dapat digunakan untuk mengambil suatu data di field / kolom pada tabel lain. Misalnya kita memiliki tabel seperti berikut :

Tabel 1 : (Identitas)
Nama No_Telp Pekerjaan Kode_Kota
Dwiky 0219857348 Developer JKT01
Ilham 0219378474 Developer JKT01
Wilda 0219374556 Akuntan BDG01
Tabel 2 : (Data_Kota)
Kode_Kota* Nama_Kota
JKT01 JAKARTA
BDG01 BANDUNG
DPS02 DENPASAR

Disini kita memiliki 2 tabel, Tabel 1 diberi nama Identitas dan Tabel 2 diberi nama Data_Kota

Kemudian kita ingin menampilkan Nama Kota pada Tabel 1. Sedangkan Tabel 1 tidak memiliki kolom “Nama_Kota”, untuk itu kita dapat menggunakan Subquery untuk menampilkan Kolom Nama Kota.

Berikut ini Querynya :
</div>
<div style="text-align: justify;"><span style="font-family: Courier New, Courier, monospace;"><span style="color: blue;"><b>SELECT </b></span>Nama, No_Telp, Pekerjaan, Kode_Kota, (<span style="color: blue;"><b>SELECT </b></span><span style="color: purple;"><b>T2</b></span>.Nama_Kota <span style="color: blue;"><b>FROM </b></span>Data_Kota <span style="color: purple;"><b>T2 </b></span>WHERE <span style="color: purple;"><b>T1</b></span>.Kode_Kota = <span style="color: purple;"><b>T2</b></span>.Kode_Kota) <span style="color: blue;"><b>AS </b></span>Nama_Kota <b><span style="color: blue;">FROM</span> </b>Identitas <span style="color: purple;"><b>T1</b></span>;</span></div>
<div style="text-align: justify;"> 
Subquery yang dimaksud pada Query diatas yaitu :
</div>
<div style="text-align: justify;"><span style="font-family: 'Courier New', Courier, monospace;">(</span><span style="color: blue; font-family: 'Courier New', Courier, monospace;"><b>SELECT </b></span><span style="color: purple; font-family: 'Courier New', Courier, monospace;"><b>T2</b></span><span style="font-family: 'Courier New', Courier, monospace;">.Nama_Kota </span><span style="color: blue; font-family: 'Courier New', Courier, monospace;"><b>FROM </b></span><span style="font-family: 'Courier New', Courier, monospace;">Data_Kota </span><span style="color: purple; font-family: 'Courier New', Courier, monospace;"><b>T2 </b></span><span style="font-family: 'Courier New', Courier, monospace;">WHERE </span><span style="color: purple; font-family: 'Courier New', Courier, monospace;"><b>T1</b></span><span style="font-family: 'Courier New', Courier, monospace;">.Kode_Kota = </span><span style="color: purple; font-family: 'Courier New', Courier, monospace;"><b>T2</b></span><span style="font-family: 'Courier New', Courier, monospace;">.Kode_Kota) <b><span style="color: blue;">AS</span></b> </span><span style="font-family: 'Courier New', Courier, monospace;">Nama_Kota</span></div>
<div style="text-align: justify;"> 

T1 Merupakan Alias untuk Tabel Identitas dan T2 merupakan Alias untuk tabel Data_Kota

Alias tersebut digunakan untuk mempermudah menuliskan nama tabel. Selain itu pada tabel 1 dan tabel 2 terdapat nama kolom/field yang sama dan keduanya dipanggil bersamaan pada satu query sehingga jika tidak memakai Alias, maka sistem database tidak mengetahui yang mana kolom/field milik Tabel 1 dan kolom/field milik Tabel 2.

Mari kita bahas satu persatu maksud dari sub query diatas:
 
SELECT T2.Nama_Kota
Yaitu Menampilkan Kolom/Field Nama_Kota
FROM Data_Kota T2
Dari Tabel Data_Kota dengan Alias T2
WHERE T1.Kode_Kota = T2.Kode_Kota
Yang mana Kode_Kota pada tabel 1(Identitas) sama dengan Kode_Kota pada tabel 2(Data_Kota)
AS Nama_Kota
Yang hasil dari querynya diberi nama kolom Nama_Kota
Query tersebut ada di dalam query :
SELECT Nama, No_Telp, Pekerjaan, Kode_Kota, (XXXXXXXXX) FROM Identitas T1;
Jika dijalankan maka hasil yang di dapat yaitu :
Nama No_Telp pekerjaan Kode_Kota Nama_Kota
Dwiky 0219857348 Developer JKT01 JAKARTA
Ilham 0219378474 Developer JKT01 JAKARTA
Wilda 0219374556 Akuntan BDG01 BANDUNG
Apabila anda baru mempelajari perintah query, untuk lebih memudahkan ada baiknya anda membaca terlebih dahulu Pengertian DDL, DML dan SQL.