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 | |
|---|---|---|
| 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:
- Bob Johnson tidak muncul karena tidak ada pesanan yang terkait dengannya
- Pesanan dengan id 104 muncul meskipun pelanggan dengan id 4 tidak ada
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.