DML: SELECT dengan LEFT (OUTER) JOIN

LEFT JOIN atau LEFT OUTER JOIN dalam SQL adalah konsep dalam sistem manajemen database relasional (RDBMS) yang memungkinkan kita menggabungkan baris dari dua atau lebih tabel berdasarkan kolom terkait di antara mereka.

Kata kunci LEFT JOIN mengembalikan semua catatan dari tabel kiri (table1), dan catatan yang cocok dari tabel kanan (table2). Hasilnya adalah NULL pada sisi kanan ketika tidak ada yang cocok.

Sintaks Dasar

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
  • table1: Tabel kiri.
  • column_name(s): Kolom yang ingin kita pilih.
  • table2: Tabel kanan.
  • table1.column_name = table2.column_name: Kondisi yang menghubungkan kedua tabel.

Contoh 1

Mari kita mulai dengan contoh dasar:

Tabel “order”

order_idcustomer_idorder_date
132020-07-04 09:12:35
212020-09-13 17:35:21
322020-10-09 11:40:04
452020-12-02 06:51:56

Tabel “customer”

customer_idnamecountry
1JohnUSA
2MichaelGermany
3SarahFrance
4SallyUK

Kita dapat menemukan semua pesanan, apakah mereka memiliki pelanggan yang cocok atau tidak, menggunakan kueri berikut:

SELECT order.order_id, customer.name, customer.country
FROM order
LEFT JOIN customer
ON order.customer_id = customer.customer_id;

Hasilnya akan terlihat seperti ini:

order_idnamecountry
1SarahFrance
2JohnUSA
3MichaelGermany
4NULLNULL

order_id 4 tidak memiliki customer_id yang cocok dalam tabel Pelanggan, sehingga mengembalikan NULL.

Contoh 2 - Menggabungkan Lebih dari Dua Tabel

Mari pertimbangkan tabel baru yang disebut “product”:

Tabel “product”

product_idproduct_nameprice
1Apple1.00
2Banana0.50
3Cherry2.00

Untuk mendapatkan semua pesanan, pelanggan yang membuat pesanan, dan produk yang dibeli, kita dapat menggunakan LEFT JOIN dua kali:

SELECT order.order_id, customer.name, product.product_name
FROM order
LEFT JOIN customer ON order.customer_id = customer.customer_id
LEFT JOIN product ON order.product_id = product.product_id;

Hasilnya akan terlihat seperti ini:

order_idnameproduct_name
1SarahApple
2JohnBanana
3MichaelCherry
4NULLNULL

Di sini, Order 4 tidak cocok dengan pelanggan atau produk apa pun, sehingga mengembalikan NULL di bidang tersebut.

Contoh 3 - Menggunakan LEFT JOIN dengan Klausa WHERE

Kita juga dapat menggunakan klausa LEFT JOIN dengan klausa WHERE untuk memfilter catatan.

SELECT order.order_id, customer.name, customer.country
FROM order
LEFT JOIN customer
ON order.customer_id = customer.customer_id
WHERE customer.country = 'USA';

Hasilnya:

order_idnamecountry
2JohnUSA

Hasilnya hanya mencakup pesanan dari pelanggan di USA. Pesanan lain atau pesanan yang tidak memiliki pelanggan yang cocok di USA tidak dimasukkan dalam set hasil.

Contoh 4 - Menggunakan LEFT JOIN dengan Fungsi Agregat

LEFT JOIN juga dapat digunakan dengan fungsi agregat seperti COUNT(), SUM(), AVG(), dll.

Misalnya, kita ingin menghitung jumlah pesanan yang dibuat setiap pelanggan:

SELECT customer.name, COUNT(order.order_id) as number_of_orders
FROM customer
LEFT JOIN order
ON customer.customer_id = order.customer_id
GROUP BY customer.name;

Hasilnya:

namenumber_of_orders
John1
Michael1
Sarah1
Sally0

Kueri ini mengelompokkan pesanan berdasarkan nama pelanggan, dan menghitung jumlah pesanan yang dibuat setiap pelanggan. Sally tidak membuat pesanan apa pun, sehingga NumberOfOrders adalah 0.

  1. SQL LEFT JOIN Keyword - W3Schools
  2. The SQL LEFT JOIN syntax - SQL Tutorial
  3. LEFT OUTER JOIN in SQL Server - Microsoft Docs
  4. SQL Aggregate Functions - W3Schools
  5. The GROUP BY Statement in SQL - SQL Tutorial
  6. Using JOINs in SQL Server - Microsoft Docs
  7. Filtering Data with WHERE Clause in SQL Server - SQL Server Tutorial
Last updated on