Subqueries


Kenapa Subqueries?

Dalam sebuah database, subquery digunakan untuk mengambil data dari satu atau lebih tabel berdasarkan kondisi yang didefinisikan dalam query lain. Subquery dapat digunakan dalam klausa SELECT, WHERE, dan FROM dalam pernyataan SQL.


ALL

Operator ALL digunakan untuk membandingkan hasil query dengan hasil yang dikembalikan oleh sebuah subquery. Subquery harus mengembalikan beberapa nilai, dan operator perbandingan dapat berupa operator perbandingan yang valid.

Syntax untuk menggunakan operator ALL adalah sebagai berikut:

SELECT column1, column2, ...
FROM table1
WHERE column_name <operator> ALL (SELECT column_name FROM table2);

Sebagai contoh, untuk mengambil daftar semua pelanggan yang telah membuat pesanan dengan jumlah total pesanan yang lebih besar dari semua pesanan yang dibuat oleh pelanggan dengan ID pelanggan tertentu, digunakan pernyataan SQL berikut:

SELECT customer_id, customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
WHERE total_order_amount > ALL (SELECT total_order_amount FROM orders WHERE customer_id = 1234);

EXISTS

Operator EXISTS digunakan untuk memeriksa apakah sebuah subquery mengembalikan baris. Operator EXISTS mengembalikan nilai Boolean TRUE jika subquery mengembalikan setidaknya satu baris; sebaliknya, mengembalikan FALSE.

Syntax untuk menggunakan operator EXISTS adalah sebagai berikut:

SELECT column1, column2, ...
FROM table1
WHERE EXISTS (SELECT column_name FROM table2 WHERE condition);

Sebagai contoh, untuk mengambil daftar semua pelanggan yang telah membuat pesanan, digunakan pernyataan SQL berikut:

SELECT customer_id, customer_name
FROM customers
WHERE EXISTS (SELECT order_id FROM orders WHERE orders.customer_id = customers.customer_id);

IN

Operator IN digunakan untuk mengecek apabila hasil query ada didalam hasil yang dikembalikan oleh sebuah subquery.

Syntax untuk menggunakan operator IN adalah sebagai berikut:

SELECT column1, column2, ...
FROM table1
WHERE column_name operator IN (SELECT column_name FROM table2 WHERE condition);

Sebagai contoh, untuk mengambil daftar semua pesanan yang dibuat oleh pelanggan yang tinggal di kota tertentu, digunakan pernyataan SQL berikut:

SELECT order_id, order_date, customer_id
FROM orders
WHERE customer_id IN (SELECT customer_id FROM customers WHERE city = 'New York');

ANY

Operator ANY digunakan untuk mengecek apabila hasil query memenuhi operator perbandingan dengan setidaknya 1 row yang dikembalikan oleh sebuah subquery.

Syntax untuk menggunakan operator ANY adalah sebagai berikut:

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY (SELECT column_name FROM table_name WHERE condition);

Sebagai contoh, untuk mengambil daftar semua karyawan yang gajinya melebihi 10 juta, digunakan pernyataan SQL berikut:

SELECT *
FROM employees
WHERE employee_id = ANY
(SELECT employee_id
FROM salary_data
WHERE salary > 10000000);