Anda di halaman 1dari 4

LATIHAN

SUBQUERY

TUJUAN LATIHAN

1. Siswa diharapkan mampu memahami Subquery.


2. Siswa diharapkan mampu menyelesaikan studi kasus tertentu dengan Subquery.

PERLENGKAPAN LATIHAN
1. Modul Praktikum Basis Data
2. MySQL 5.5.27 (Apache 2.4.3) ke atas
3. Browser
4. Navicat Premium

MATERI PRAKTIKUM
1. Pengenalan Subquery

Sub Query adalah query didalam query. Artinya seleksi data berdasarkan dari hasil seleksi data yang
telah ada. Sintak SQL nya sama dengan sintak SQL pada umumnya, hanya saja kondisi setelah where
atau from diikuti dengan query baru atau sub query.
Sintak SQL nya sebagai berikut:

Di bawah ini adalah contoh penggunaan subquery:


SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
Dari contoh tersebut, SELECT * FROM t1 ... merupakan query yang paling luar (outer query),
dan SELECT column1 FROM t2) merupakan subquery. Bisa dikatakan bahwa subquery adalah
sekumpulan query yang ada di outer query, sehingga ada kemungkinan subquery terdapat dalam
subquery lagi dan kemudian setumpukan subquery tersebut ada di sebuah query. Subquery bisa
diibaratkan anaknya, dan outer query adalah induknya.
Keuntungan utama dari subquery adalah:

1
Subquery membuat query-query menjadi tersusun, sehingga ada kemungkinan untuk
memisahkan / memberi batasan area untuk setiap bagian statement.
Subquery menyediakan cara alternatif untuk menjalankan operasi-operasi yang dalam
keadaan lain akan membutuhkan JOIN dan UNION yang kompleks.
Subquery lebih mudah dibaca dibanding JOIN atau UNION yang kompleks.
Sebuah subquery bisa mengembalikan scalar (single value/satu nilai), single row (satu baris), single
column (satu kolom), atau table (satu/lebih baris dari satu/lebih kolom). Ada beberapa batasan untuk
tipe statement yang subquery bisa digunakan di dalamnya. Sebuah subqeury dengan SELECT yang
biasa dapat berisikan: DISTINCT, GROUP BY, ORDER BY, LIMIT, joins, indexhints, UNION,comments,
dan fungsi-fungsi lainnya.
Sedangkan, outer statement (statement yang paling luar) yang memiliki subquery tidak hanya bisa
menggunakan SELECT saja, tapi dia juga bisa menggunakan INSERT, UPDATE, DELETE, SET,
atau DO.
2. Penggunaan Perbandingan (Comparison) untuk Subquery

Pada umumnya, jika terdapat fungsi perbadingan di subquery, bentuk querynya akan sebagai
berikut:

non_subquery_operand comparison_operator (subquery)

Dimana comparison_operator adalah salah satu dari operator-operator di bawah ini:

= > < >= <= <> != <=>

Contohnya adalah:

... WHERE 'a' = (SELECT column1 FROM t1)

MySQL juga mendukung bentuk comparison seperti di bawah ini:

non_subquery_operand LIKE (subquery)

Di bawah ini terdapat pula contoh subquery yang menggunakan comparison dan tidak
menggunakan hubungan JOIN di dalamnya. Query ini mengambil semua baris di tabel t1 dimana
kolom nilai dari column1 ada sama dengan nilai maksimum dari column2 yang ada di tabel t2:

SELECT * FROM t1

WHERE column1 = (SELECT MAX(column2) FROM t2);

2
3. Penggunaan Subquery SELECT Setelah FROM

Subquery dengan statement SELECT selain bisa digunakan setelah operator comparison, juga bisa
digunakan setelah FROM. Sintaksnya adalah sebagai berikut:

SELECT ... FROM (subquery) [AS] name ...

Tulisan [AS] name adalah wajib dicantumkan, karena setiap tabel setelah kata FROM harus memiliki
nama. Setiap nama kolom di subquery select harus memiliki nama yang unik.

Di bawah ini adalah bagaimana penggunaan subquery setelah FROM.

SELECT sb1,sb2,sb3

FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb

WHERE sb1 > 1;

Di bawah ini adalah contoh lain penggunaan subquery setelah FROM. Karena AVG(SUM(column1))
tidak bisa dilakukan. Maka, SUM(column1) dibuat menjadi subquery setelah FROM.

SELECT AVG(sum_column1)

FROM (SELECT SUM(column1) AS sum_column1

FROM t1 GROUP BY column1) AS t1;

Sedangkan, subquery (sum_column1) bisa dipanggil oleh outer query yang membutuhkan,
contohnya untuk dihitung AVERAGE-nya seperti contoh di atas.

LATIHAN PRAKTIKUM

3
Soal Praktik
1. Tampilkan data mobil dari pelanggan yang menyewa mobil paling lama !

2. Tampilkan data mobil dengan nama pegawai dan pelanggan yang menyewa mobil paling murah.

3. Tampilkan nama pegawai yang melayani jumlah transaksi paling banyak. (Menampilkan kolom
pegawai dan total transaksi)

Anda mungkin juga menyukai