Perintah LEFT JOIN

📚 Pengenalan Perintah LEFT JOIN

LEFT JOIN mengembalikan semua baris dari tabel kiri dan baris yang cocok dari tabel kanan. Jika tidak ada kecocokan, hasilnya adalah NULL di sisi kanan.

Sintaks LEFT JOIN

Sintaks untuk LEFT JOIN adalah:

SELECT tabel1.kolom1, tabel2.kolom2, ...
FROM tabel1
LEFT JOIN tabel2
ON tabel1.kolom_kunci = tabel2.kolom_kunci;

Atau dengan kata kunci OUTER (opsional):

SELECT tabel1.kolom1, tabel2.kolom2, ...
FROM tabel1
LEFT OUTER JOIN tabel2
ON tabel1.kolom_kunci = tabel2.kolom_kunci;

Contoh Tabel

Misalkan kita memiliki dua tabel berikut:

Tabel 'pelanggan'

id nama email
1 John Doe john@example.com
2 Jane Smith jane@example.com
3 Bob Johnson bob@example.com

Tabel 'pesanan'

id pelanggan_id tanggal jumlah
101 2 2023-01-15 150000
102 1 2023-01-20 200000
103 2 2023-02-05 75000
104 4 2023-02-10 300000

Contoh LEFT JOIN

Untuk menggabungkan tabel 'pelanggan' dan 'pesanan' berdasarkan id pelanggan:

SELECT pelanggan.nama, pesanan.tanggal, pesanan.jumlah
FROM pelanggan
LEFT JOIN pesanan
ON pelanggan.id = pesanan.pelanggan_id;

Hasilnya akan menjadi:

nama tanggal jumlah
John Doe 2023-01-20 200000
Jane Smith 2023-01-15 150000
Jane Smith 2023-02-05 75000
Bob Johnson NULL NULL

Perhatikan bahwa:

LEFT JOIN dengan Alias

Anda dapat menggunakan alias untuk nama tabel untuk membuat query lebih pendek:

SELECT p.nama, pe.tanggal, pe.jumlah
FROM pelanggan AS p
LEFT JOIN pesanan AS pe
ON p.id = pe.pelanggan_id;

LEFT JOIN dengan WHERE

Anda dapat menggabungkan LEFT JOIN dengan WHERE untuk memfilter hasil:

SELECT p.nama, pe.tanggal, pe.jumlah
FROM pelanggan AS p
LEFT JOIN pesanan AS pe ON p.id = pe.pelanggan_id
WHERE pe.jumlah > 100000;

LEFT JOIN dengan IS NULL

Anda dapat menggunakan LEFT JOIN dengan IS NULL untuk menemukan baris yang tidak memiliki kecocokan:

SELECT p.nama, p.email
FROM pelanggan AS p
LEFT JOIN pesanan AS pe ON p.id = pe.pelanggan_id
WHERE pe.id IS NULL;

Hasilnya akan menjadi:

nama email
Bob Johnson bob@example.com

LEFT JOIN dengan Beberapa Tabel

Anda dapat menggabungkan lebih dari dua tabel:

SELECT p.nama, pe.tanggal, pr.nama_produk
FROM pelanggan AS p
LEFT JOIN pesanan AS pe ON p.id = pe.pelanggan_id
LEFT JOIN produk AS pr ON pe.produk_id = pr.id;

LEFT JOIN dengan Agregat

Anda dapat menggunakan fungsi agregat dengan LEFT JOIN:

SELECT p.nama, COUNT(pe.id) AS jumlah_pesanan, SUM(pe.jumlah) AS total_belanja
FROM pelanggan AS p
LEFT JOIN pesanan AS pe ON p.id = pe.pelanggan_id
GROUP BY p.id, p.nama
ORDER BY total_belanja DESC;

LEFT JOIN dengan Multiple Conditions

Anda dapat menggunakan beberapa kondisi dalam klausa ON:

SELECT p.nama, pe.tanggal, pe.jumlah
FROM pelanggan AS p
LEFT JOIN pesanan AS pe ON p.id = pe.pelanggan_id AND pe.jumlah > 100000;

LEFT JOIN vs. INNER JOIN

Perbedaan utama antara LEFT JOIN dan INNER JOIN adalah:

-- INNER JOIN - hanya baris yang cocok
SELECT p.nama, pe.tanggal, pe.jumlah
FROM pelanggan AS p
INNER JOIN pesanan AS pe ON p.id = pe.pelanggan_id;

-- LEFT JOIN - semua baris dari tabel kiri
SELECT p.nama, pe.tanggal, pe.jumlah
FROM pelanggan AS p
LEFT JOIN pesanan AS pe ON p.id = pe.pelanggan_id;

Coba Sendiri

Anda dapat mencoba kode SQL di atas di editor berikut:

💡 Tips Perintah LEFT JOIN

LEFT JOIN sangat berguna untuk menemukan data yang "hilang" atau tidak memiliki kecocokan di tabel lain. Misalnya, menemukan pelanggan yang tidak pernah melakukan pesanan atau produk yang tidak pernah terjual.