Perintah RIGHT JOIN

📚 Pengenalan Perintah RIGHT JOIN

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

Sintaks RIGHT JOIN

Sintaks untuk RIGHT JOIN adalah:

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

Atau dengan kata kunci OUTER (opsional):

SELECT tabel1.kolom1, tabel2.kolom2, ...
FROM tabel1
RIGHT 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 RIGHT JOIN

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

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

Hasilnya akan menjadi:

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

Perhatikan bahwa:

RIGHT 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
RIGHT JOIN pesanan AS pe
ON p.id = pe.pelanggan_id;

RIGHT JOIN dengan WHERE

Anda dapat menggabungkan RIGHT JOIN dengan WHERE untuk memfilter hasil:

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

RIGHT JOIN dengan IS NULL

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

SELECT pe.id, pe.tanggal, pe.jumlah
FROM pelanggan AS p
RIGHT JOIN pesanan AS pe ON p.id = pe.pelanggan_id
WHERE p.id IS NULL;

Hasilnya akan menjadi:

id tanggal jumlah
104 2023-02-10 300000

RIGHT JOIN dengan Beberapa Tabel

Anda dapat menggabungkan lebih dari dua tabel:

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

RIGHT JOIN dengan Agregat

Anda dapat menggunakan fungsi agregat dengan RIGHT JOIN:

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

RIGHT JOIN vs. LEFT JOIN

RIGHT JOIN pada dasarnya adalah kebalikan dari LEFT JOIN. Anda dapat mengubah RIGHT JOIN menjadi LEFT JOIN dengan menukar posisi tabel:

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

-- Sama dengan LEFT JOIN dengan tabel yang ditukar
SELECT p.nama, pe.tanggal, pe.jumlah
FROM pesanan AS pe
LEFT JOIN pelanggan AS p ON p.id = pe.pelanggan_id;

Catatan: Beberapa database (seperti MySQL) tidak mendukung RIGHT JOIN secara efisien. Dalam kasus seperti itu, lebih baik menggunakan LEFT JOIN dengan tabel yang ditukar.

Coba Sendiri

Anda dapat mencoba kode SQL di atas di editor berikut:

💡 Tips Perintah RIGHT JOIN

RIGHT JOIN sering digunakan untuk menemukan data di tabel kanan yang tidak memiliki kecocokan di tabel kiri. Namun, karena RIGHT JOIN dapat dikonversi menjadi LEFT JOIN dengan menukar posisi tabel, banyak developer lebih suka menggunakan LEFT JOIN untuk konsistensi.