Anda di halaman 1dari 7

http://creativecommons.org/licenses/by-nc-sa/3.

0/ Modul ini bebas dicopy, didistribusikan , ditransmit dan diadaptasi/modifikasi/diremix dengan syarat tidak untuk komersial, pembuat asal tetap dicantumkan dan hasil modifikasi dishare dengan lisensi yang sama. Modul ini kami rancang sesuai silabus dan kesepakatan dengan dosen basis data yang teman teman kontrak di semester ini.Isi materi yang ada di modul ini kami coba terlebih dahulu agar mengurangi kesalahan percobaan saat praktikum ataupun saat teman teman latihan dirumah.Untuk saran dan responsi silahkan hubungi kami di Lab Basis Data.Semoga modul ini bisa membantu teman teman untuk mengimplementasikan teori dan konsep basis data yang teman teman dapat di kelas serta bisa menyelesaikan tugas besar basis data yang akan dihadapi di akhir semester ini.Selamat belajar.

SUBQUERY
Apa itu subquery? Subquery merupakan Query yang berada dalam Query lainnya. Contoh : Select * from (select nama, nim from mahasiswa);. Pada contoh tersebut, Query select nama, nim from mahasiswa; berada didalam Query lainnya,,nah itulah yang dimaksud Subquery. Fungsi Subquery adalah sebagai berikut : Menduplikasi data dari satu tabel ke tabel lain. Menerima data dari inline view Mengambil data dari tabel lain untuk kemudian di masukan / di update ke tabel yang dituju. Menghapus baris dari satu tabel berdasarkan baris dari tabel lain.

Berikut ini merupakan beberapa contoh penggunaan SubQuery. Subquery dalam Where o Single Value Kita gunakan database yang telah ada yaitu database pada pertemuan kemarin. Berikut ini contoh penggunaan subquery, pada kasus ini, subquery digunakan untuk menampilkan nilai terendah dari mata kuliah basis data beserta mahasiswa yang memiliki nilai terendah tersebut.

Query : select n.nilai, m.nama from mahasiswa m, matkul mk, nilai n where n.nim=m.nim and n.kode_matkul=mk.kode_matkul and mk.nama_matkul="Basis Data" and n.nilai=(select min(nilai) from nilai n, matkul mk where

n.kode_matkul=mk.kode_matkul and mk.nama_matkul="Basis Data");

Hasil :

Query tersebut berupa gabungan dari outer dan Query 2. Query 1 : select m.nama from mahasiswa m, matkul mk, nilai n where n.nim=m.nim and n.kode_matkul=mk.kode_matkul and mk.nama_matkul="Basis Data" and n.nilai=(x);

Query 1 tersebut berfungsi untuk mengambil nama mahasiswa yang memiliki nilai sesuai dengan yang dihasilkan Query 2.

Query 2 : select min(nilai) from nilai n, matkul mk where n.kode_matkul=mk.kode_matkul and mk.nama_matkul="Basis Data"; Query 2 tersebut berfungsi untuk mengambil semua nilai untuk mata kuliah Basis Data.

Mullti Value Berikut ini contoh Subquery dengan menggunakan multi value. Subquery tersebut berfungsi untuk menampilkan mata kuliah beserta mahasiswa yang mengontrak mata kuliah tersebut yang sama dengan Hasan.

Query: select mk.nama_matkul, m.nama from nilai n, matkul mk, mahasiswa m where n.kode_matkul=mk.kode_matkul and n.nim=m.nim and n.kode_matkul in (select n.kode_matkul from nilai n, matkul mk, mahasiswa m where

n.kode_matkul=mk.kode_matkul and n.nim=m.nim and m.nama="Hasan") order by mk.nama_matkul;

Hasil :

Query tersebut berupa gabungan dari outer dan Query 2.

Query 1 : select mk.nama_matkul, m.nama from nilai n, matkul mk, mahasiswa m where n.kode_matkul=mk.kode_matkul and n.nim=m.nim and n.kode_matkul in (x); Query 1 tersebut berfungsi untuk menampilkan mata kuliah dan nama mahasiswa yang mengontrak mata kuliah yang sama dengan mahasiswa yang dihasilkan dari Query 2.

Query 2 : select n.kode_matkul from nilai n, matkul mk, mahasiswa m where n.kode_matkul=mk.kode_matkul and n.nim=m.nim and m.nama="Hasan"; Query 2 tersebut berfungsi untuk menampilkan mata kuliah yang dikontrak oleh Hasan.

Subquery dalam Having o Single Value Masih menggunakan database pada pertemuan kemarin. Berikut ini contoh penggunaan Subquery dalam having. Subquery ini berfungsi untuk menampilkan mahasiswa yang mempunyai rata-rata nilai lebih besar dari rata-rata nilai mahasiswa yang bernama Indana.

Query : select m.nama, avg(n.nilai) as rerata from mahasiswa m, nilai n where n.nim=m.nim group by m.nama having rerata>(select avg(n.nilai) from nilai n, mahasiswa m where n.nim=m.nim and m.nama="Indana");

Hasil :

Query tersebut berupa gabungan dari outer dan Query 2.

Query 1 : select m.nama, avg(n.nilai) as rerata from mahasiswa m, nilai n where n.nim=m.nim group by m.nama having rerata>(x); Query tersebut berfungsi untuk mengambil nama mahasiswa beserta rata-ratanya yang nilainya lebih besar dari nilai yang dihasilkan dari Query 2.

Query 2 : select avg(n.nilai) from nilai n, mahasiswa m where n.nim=m.nim and m.nama="Indana";"; Query 2 tersebut berfungsi untuk mengambil rata-rata nilai Indana.

Multi Value Silahkan dicoba sendiri .

Subquery dalam From Berikut ini contoh Subquery dalam from. Query tersebut berfungsi untuk menampilkan nim, nama, nilai basdat, nilai disweb dengan mengaliaskan query(1) sebagai bd dan query(2) sebagai dw. Query : select m.nim, m.nama, bd.nilai as nilai_basis_data, dw.nilai as nilai_disweb from mahasiswa m, (select n.nim, n.nilai from mahasiswa m left join nilai n on (m.nim=n.nim and n.kode_matkul="IK-004")) as bd, (select n.nim, n.nilai from mahasiswa m left join nilai n on (m.nim=n.nim and n.kode_matkul="IK-006")) as dw where m.nim=bd.nim and m.nim=dw.nim;

Hasil :

Query diatas merupakan gabungan dari 2 buah query, yaitu : Query 1 : select n.nim, n.nilai from mahasiswa m left join nilai n on (m.nim=n.nim and n.kode_matkul="IK-004");

Query 2 : select n.nim, n.nilai from mahasiswa m left join nilai n on (m.nim=n.nim and n.kode_matkul="IK-006");

Referensi modul : http://risnotes.com/2011/12/subqueries/

Anda mungkin juga menyukai