0% menganggap dokumen ini bermanfaat (0 suara)
82 tayangan

Modul #5 - Subquery Ver2

Dokumen tersebut memberikan penjelasan mengenai subquery dalam SQL. Subquery adalah query yang berada di dalam query lain. Terdapat beberapa jenis subquery seperti single row, multiple row, dan multiple column subquery. Subquery digunakan untuk menangani masalah yang kompleks dengan menyisipkan query di dalam klausa seperti WHERE, HAVING, dan FROM. Diberikan pula contoh-contoh penggunaan subquery beserta penjelasan operator yang digunakan.

Diunggah oleh

mrdark
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
82 tayangan

Modul #5 - Subquery Ver2

Dokumen tersebut memberikan penjelasan mengenai subquery dalam SQL. Subquery adalah query yang berada di dalam query lain. Terdapat beberapa jenis subquery seperti single row, multiple row, dan multiple column subquery. Subquery digunakan untuk menangani masalah yang kompleks dengan menyisipkan query di dalam klausa seperti WHERE, HAVING, dan FROM. Diberikan pula contoh-contoh penggunaan subquery beserta penjelasan operator yang digunakan.

Diunggah oleh

mrdark
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 15

Modul Praktikum

Basis Data
Subquery

TIM ASISTEN BASIS DATA


ILMU KOMPUTER UPI 2014/2015

#5
Halo teman-teman. Saya harap kalian masih betah belajar Basis Data ya. Kali
ini kita akan belajar SQL yang lebih expert dan spektakuler deh pokoknya. Apa
itu ?? sebelum mulai mari kita buat database dan tabel dibawah ini dulu…

Buat database bernama „restoran‟.


-Tabel Menu

-Tabel Pelayan

-Tabel Pelanggan

-Tabel Pemesanan
Kemudian isi para tabel diatas dengan:
-Isi Tabel Menu

-Isi Tabel Pelayan

-Isi Tabel Pelanggan


-Isi Tabel Pemesanan
Subquery
Subquery itu merupakan statement SELECT yang dilampirkan sebagai
klausa dalam SQL statement yang lainnya. Subquery itu intinya mah secara
kasar diartikan Query yang berada dalam Query lainnya.

Nama lain: Subselect , Nested Select.

Contoh : “Select *from menu where harga =(select max(harga) from menu);”.

Pada contoh tersebut, Query “select max(nilai) from nilai” berada


didalam Query lainnya,, nah itulah yang dimaksud Subquery.

Subquery digunakan untuk menangani masalah yang kompleks yang


mungkin sulit untuk dilakukan hanya dengan sebuah query saja. Subquery dapat
ditempatkan dalam klausa WHERE, HAVING atau FROM.
Fungsi subquery adalah sebagai berikut :

- Menduplikasi data dari satu table ke table lain.


- Menerima data dari inline view
- Mengambil data dari table lain kemudian dimasukan atau diupdate ke table
yang dituju .
- Menghapus baris dari satu table berdasarkan baris table lain

Adapun aturan dalam subquery adalah sebagai berikut :

- Dalam sebuah query boleh terdapat lebih dari satu subquery


- Sebuah subquery boleh memiliki subquery
- Operator perbandingan yang dapat digunakan adalah =, >, <, >=, <=, <>, !=,
IN, ANY, ALL, EXISTS, NOT EXISTS.

Tipe-tipe dari Subquery :

- Single row
- Multiple row
- Multiple column
A. Single Row Subquery
Single row subquery memberikan hasil hanya satu baris pada bagian
subquerynya. Operator pembanding yang digunakan untuk single row subquery
ini antara lain : =, >, <, >=, <= atau <>.
Contoh Kasus:
Tampilkan tabel pelayan yang memiliki alamat yang sama dengan pelayan „Rabihi Fauzan‟.

Query:

select *
from pelayan
where alamat =
(select alamat from pelayan where nama_pelayan='Rabihi
Fauzan');
Outer Query:

select *
from pelayan
where alamat = (subquery)

Subquery:

select alamat from pelayan where nama_pelayan='Rabihi


Fauzan';
Hasil:
B. Multiple Row Subquery
Multiple row subquery adalah subquery yang menghasilkan lebih dari
satu baris. Untuk multiple row subquery ini operator pembanding yang
digunakan adalah IN, ANY atau ALL.

a. Operasi IN

Operator IN memiliki arti: sama dengan member di dalam list.


Contoh Kasus:
Tampilkan tabel pelanggan yang pelanggannya pernah melakukan pemesanan.

Query:

select *
from pelanggan
where id_pelanggan in
(select id_pelanggan from pemesanan);

Outer Query:

select *
from pelanggan
where id_pelanggan in (subquery)

Subquery:

select id_pelanggan from pemesanan;

Hasil:
b. Operasi ANY

Operator ANY memiliki arti: membandingkan suatu nilai dengan setiap nilai
yang dikembalikan oleh subquery.

Contoh Kasus:
Tampilkan tabel pemesanan memiliki tanggal pesan sebelum pemesanan yang
dilakukan oleh pelanggan dengan id=2.
Query:

select *
from pemesanan
where tgl_pesan < any
(select tgl_pesan from pemesanan where id_pelanggan=2);

Outer Query:

select *
from pemesanan
where tgl_pesan < any (subquery);

Subquery:

select tgl_pesan from pemesanan where id_pelanggan=2

Hasil:

Operator = ANY ekuivalen dengan IN


Operator < ANY ekuivalen dengan MAX (kurang dari max di list)
Operator > ANY ekuivalen dengan MIN (lebih dari min di list
c. Operator ALL

Operator ALL memiliki arti: membandingkan suatu nilai dengan semua nilai yang
dikembalikan oleh subquery.

Contoh Kasus:
Tampilkan tabel pemesanan yang memiliki total harga kurang dari total harga pelanggan
yang memiliki id=4.

Query:

select *
from pemesanan
where total < all
(select total from pemesanan where id_pelanggan=4);

Outer Query:

select *
from pemesanan
where total < all (subquery);

Subquery:

select total from pemesanan where id_pelanggan=4;

Hasil:
C. Multiple Column Subquery
Memungkinkan membandingkan banyak kolom dengan menuliskan field-
field yang akan dicocokan dalam sebuah tanda kurung. Operator yang
digunakan IN, ANY, ALL, EXISTS, NOT EXISTS.

Contoh Kasus:
Tampilkan tabel pemesanan yang memiliki id_menu dan id_pelayan yang memiliki id_menu
dan id_pelayan dari pelanggan yang memiliki id=6.

Query:

select *
from pemesanan
where (id_menu, id_pelayan) IN
(select id_menu, id_pelayan from pemesanan where id_pelanggan=6);

Outer Query:
select *
from pemesanan
where (id_menu, id_pelayan) IN (subquery);

Subquery:

select id_menu, id_pelayan from pemesanan where id_pelanggan=6;

Hasil:
a. Operator EXISTS dan NOT EXISTS

Operator EXISTS dan NOT EXISTS digunakan pada Correlated Subquery untuk memeriksa
apakah subquery mengembalikan hasil atau tidak. APabila subquery mengembalikan hasil,
EXISTS akan mengembalikan nilai true. Begitu pula sebaliknya, jika false maka tidak
mengembalikan nilai.

Contoh Query:
select *
from menu
where exists
(select * from pemesanan where menu.id_menu=pemesanan.id_menu);

Query diatas akan menyeleksi tabel menu yang id_menu nya beririsan dengan tabel
pemesanan.

Hasil:

select *
from menu
where not exists
(select * from pemesanan where menu.id_menu=pemesanan.id_menu);

Kemudian query diatas adalah komplemen dari query sebelumnya dengan memakai operator
NOT.

Hasil:
D. Subquery dengan Having (Aggregasi)

Subquery dengan memakai having akan menghasilkan hanya satu baris (Single
Row) dengan operator pembanding =,<,<=,>,>=,<>.

Contoh Kasus:
Tampilkan tabel pemesanan yang memiliki total harga dibawah rata-rata.

Query:
select *
from pemesanan
where total <
(select avg(total) from pemesanan);

Outer Query:

select *
from pemesanan
where total < (subquery);

Subquery:

select avg(total) from pemesanan;

Hasil:
LATIHAN
==================================================================

Latihan Single Row:


a. Tampilkan tabel menu yang memiliki harga lebih dari Ramen.
b. Tampilkan tabel pemesanan yang memiliki status tidak sama dengan pelanggan berID=7.

Latihan Multiple Row:


a. Tampilkan tabel menu yang dipesan oleh „Justin Kusnendar‟ dan „Jean Junaeti‟.
b. Tampilkan tabel pelayan yang melayani antara tanggal „2014-09-30‟ sampai „2014-10-02‟.

Latihan Multiple Column:


a. Tampilkan tabel pemesanan yang memiliki id_menu dan total harga yang id_menunya 3
dan total harganya dibawah 20000.
b. Tampilkan tabel pemesanan yang memiliki status „Delivery‟ dan tanggal „2014-09-30‟
sampai „2014-10-04‟
Sumber:

 Modul #5 Subquery Praktikum Basis Data Tahun 2012


 Modul Praktikum Basis Data – Teknik Elektro FT UM 2011

“Hidup ini adalah pilihan, jika kau tak memilih, maka itu pilihanmu.”
- Monkey D. Luffy
…. quote apa ini ???

============================= \\ // =============================

Anda mungkin juga menyukai