MySQL Series : RIGHT JOIN MySQL
Dalam MySQL RIGHT JOIN digunakan untuk menggabungkan dua atau lebih tabel dan mengembalikan semua baris dari tabel sebelah kanan, dan hanya hasil dari tabel lain yang memenuhi kondisi gabungan. Jika menemukan record yang tidak cocok dari tabel sisi kiri, ia mengembalikan nilai Null. Sebenarnya mirip dengan MySQL LEFT JOIN, bedanya dalam right join memberikan hasil sebaliknya dari tabel gabungan. Right Join juga dikenal sebagai Right Outer Join. Jadi, Outer adalah klausa opsional yang digunakan dengan Right Join.
Diagram venn berikut menggambarkan tipe penggabungan right join.
Berikut ini adalah sintaks dasar Right Join yang menggabungkan tabel TabelA dan TabelB:
SELECT column
FROM TabelA
RIGHT [OUTER] JOIN TabelB
ON kondisi;
FROM TabelA
RIGHT [OUTER] JOIN TabelB
ON kondisi;
Note : pada Right Join, jika tabel berisi nama kolom yang sama, maka klausa ON dan USING memberikan hasil yang setara.
Contoh Kasus :
Di sini, kita akan membuat dua tabel "siswa" dan "ujian" yang berisi data berikut:1. Tabel siswa
+--------+--------------+------------+------------+ | nis | nama_siswa | tgl_lahir | tmp_lahir | +--------+--------------+------------+------------+ | 1 | Vanessa Angel| 2001-05-01 | Jakarta | | 2 | Nurhadi | 2002-07-15 | Surabaya | | 3 | Aldo | 2005-10-18 | Bandung | | 4 | Burhan | 2007-01-03 | Semarang | | 5 | Samsul | 2008-06-24 | Jakarta | +--------+--------------+------------+------------+
2. Tabel ujian
+-----------+------------+------+------+ | id_ujian | tgl_ujian | nis | nilai| +-----------+------------+------+------+ | 1234 | 2020-05-01 | 2 | 80 | | 2345 | 2020-07-15 | 4 | 75 | | 3456 | 2020-10-18 | 5 | 100 | | 4567 | 2020-01-03 | 2 | 65 | | 5678 | 2020-06-24 | 1 | 95 | +-----------+------------+------+------+
Untuk memilih record dari kedua tabel menggunakan RIGHT JOIN, jalankan kueri berikut:
SELECT siswa.nis, nama_siswa, nilai, tgl_ujian
FROM siswa
RIGHT JOIN ujian ON siswa.nis = ujian.nis
ORDER BY nis;
FROM siswa
RIGHT JOIN ujian ON siswa.nis = ujian.nis
ORDER BY nis;
atau alternatif lain bisa juga menggunakan kueri berikut :
SELECT siswa.nis, nama_siswa, nilai, tgl_ujian
FROM siswa
RIGHT JOIN ujian USING(nis)
ORDER BY nis;
FROM siswa
RIGHT JOIN ujian USING(nis)
ORDER BY nis;
Setelah eksekusi kueri di atas berhasil, maka akan memberikan output seperti berikut :
+--------+--------------+--------+--------------+ | nis | nama_siswa | nilai | tgl_ujian | +--------+--------------+--------+--------------+ | 1 | Vanessa Angel| 95 | 2020-06-24 | | 2 | Nurhadi | 80 | 2020-05-01 | | 2 | Nurhadi | 65 | 2020-01-03 | | 4 | Burhan | 75 | 2020-07-15 | | 5 | Samsul | 100 | 2020-10-18 | +--------+--------------+--------+--------------+
RIGHT JOIN dengan klausa WHERE
MySQL menggunakan klausa WHERE untuk memberikan hasil filter dari tabel. Contoh berikut mengilustrasikan hal ini dengan klausa Right Join:
SELECT * FROM siswa
RIGHT JOIN ulangan USING(nis)
WHERE nilai > 75 AND nilai < 100;
RIGHT JOIN ulangan USING(nis)
WHERE nilai > 75 AND nilai < 100;
kueri SQL diatas adalah untuk menampilkan semua kolom siswa yang mempunyai nilai > 75 dan < 100 . Jika kueri diatas di eksekusi maka akan menghasilkan output seperti berikut :
+--------+--------------+------------+------------+----------+------------+-------+ | nis | nama_siswa | tgl_lahir | tmp_lahir | id_ujian | tgl_ujian | nilai | +--------+--------------+------------+------------+----------+------------+-------+ | 2 | Nurhadi | 2002-07-15 | Surabaya | 1234 | 2020-05-01 | 80 | | 1 | Vanessa Angel| 2001-05-01 | Jakarta | 5678 | 2020-06-24 | 95 | +--------+--------------+------------+------------+----------+------------+-------|