Penjelasan sederhana
RIGHT JOIN adalah kebalikan LEFT JOIN. Semua baris dari tabel kanan (yang ditulis setelah RIGHT JOIN) dipertahankan, sedangkan dari tabel kiri hanya yang punya pasangan.
Dalam praktik, kebanyakan orang lebih suka menukar urutan tabel lalu memakai LEFT JOIN, karena lebih mudah dibaca. Hasilnya sama saja.
Sintaks
SELECT a.kolom, b.kolom
FROM tabel_a AS a
RIGHT JOIN tabel_b AS b
ON a.kunci = b.kunci;
| Bagian | Keterangan |
|---|---|
tabel kanan | Tabel setelah RIGHT JOIN. Semua barisnya dipertahankan. |
Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.
Contoh RIGHT JOIN
Data contoh: karyawan, departemen
Tabel karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NULL |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NULL |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NULL |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NULL | Medan | 5500000 | 2024-04-02 | NULL |
Tabel departemen
| id | nama_dept | lokasi |
|---|---|---|
| 1 | Keuangan | Jakarta |
| 2 | Marketing | Jakarta |
| 3 | IT | Bandung |
| 4 | Legal | Surabaya |
SELECT k.nama, d.nama_dept
FROM karyawan AS k
RIGHT JOIN departemen AS d
ON k.dept_id = d.id;
Hasil 8 baris
| nama | nama_dept |
|---|---|
| Andi Pratama | IT |
| Bunga Lestari | Keuangan |
| Candra Wijaya | IT |
| Dewi Anggraini | Marketing |
| Eko Saputra | Keuangan |
| Fajar Nugroho | Marketing |
| Gita Permata | IT |
| NULL | Legal |
Departemen Legal ikut muncul walau belum punya karyawan. Hendra tidak muncul.
Cara kerjanya, langkah demi langkah
- Tabel kanannya departemen (4 baris). Semuanya pasti muncul.
- Setiap departemen dicarikan karyawannya lewat
k.dept_id = d.id. Keuangan punya 2 karyawan, Marketing 2, IT 3. - Legal tidak punya karyawan. Ia tetap ditampilkan dengan nama NULL.
- Hendra tidak muncul, karena ia ada di tabel kiri dan tidak punya pasangan departemen.
- Hasilnya 8 baris.
Dipakai untuk apa di kantor?
- Menampilkan semua departemen atau cabang, termasuk yang belum punya karyawan.
Kesalahan yang sering terjadi
- Mencampur
LEFT JOINdanRIGHT JOINdalam satu query. Hasilnya sulit ditebak dan sulit dibaca orang lain. Pilih satu arah saja.
FULL OUTER JOIN