Halo teman-teman semuanya, di seri kedua belas ini kita akan belajar tentang JOIN dalam SQL, yaitu teknik untuk menggabungkan data dari dua atau lebih tabel berdasarkan kolom yang saling berhubungan. JOIN adalah konsep penting dalam relational database, karena memungkinkan kita menyatukan data yang tersebar di berbagai tabel menjadi satu hasil yang utuh.
Contoh Tabel
Untuk mempermudah latihan, kita akan gunakan dua tabel berikut:
-
Tabel jurusan
id |
nama_jurusan |
1 |
IPA |
2 |
IPS |
3 |
Bahasa |
-
Tabel siswa
id |
nama |
kelas |
jurusan_id |
1 |
Ali |
XII IPA 1 |
1 |
2 |
Budi |
XI IPS 2 |
2 |
3 |
Citra |
XII IPA 3 |
1 |
4 |
Dewi |
X IPA 2 |
NULL |
1. INNER JOIN
INNER JOIN hanya menampilkan data yang cocok di kedua tabel.
SELECT siswa.nama, siswa.kelas, jurusan.nama_jurusan
FROM siswa
INNER JOIN jurusan ON siswa.jurusan_id = jurusan.id;
Hasil:
nama |
kelas |
nama_jurusan |
Ali |
XII IPA 1 |
IPA |
Budi |
XI IPS 2 |
IPS |
Citra |
XII IPA 3 |
IPA |
Dewi tidak ditampilkan karena jurusan_id
-nya bernilai NULL
.
2. LEFT JOIN
LEFT JOIN menampilkan semua data dari tabel kiri (siswa
) meskipun tidak ada pasangan di tabel kanan (jurusan
).
SELECT siswa.nama, siswa.kelas, jurusan.nama_jurusan
FROM siswa
LEFT JOIN jurusan ON siswa.jurusan_id = jurusan.id;
Hasil:
nama |
kelas |
nama_jurusan |
Ali |
XII IPA 1 |
IPA |
Budi |
XI IPS 2 |
IPS |
Citra |
XII IPA 3 |
IPA |
Dewi |
X IPA 2 |
NULL |
Dewi tetap ditampilkan, meskipun tidak memiliki jurusan.
3. RIGHT JOIN
RIGHT JOIN menampilkan semua data dari tabel kanan (jurusan
) meskipun tidak ada pasangan di tabel kiri (siswa
).
SELECT siswa.nama, jurusan.nama_jurusan
FROM siswa
RIGHT JOIN jurusan ON siswa.jurusan_id = jurusan.id;
Hasil:
nama |
nama_jurusan |
Ali |
IPA |
Citra |
IPA |
Budi |
IPS |
NULL |
Bahasa |
Jurusan Bahasa tetap muncul meskipun belum ada siswa yang memilihnya.
4. FULL JOIN (Simulasi)
SQL standar seperti MySQL belum mendukung FULL JOIN secara langsung, tapi kita bisa mensimulasikannya menggunakan UNION dari LEFT dan RIGHT JOIN:
SELECT siswa.nama, jurusan.nama_jurusan
FROM siswa
LEFT JOIN jurusan ON siswa.jurusan_id = jurusan.id
UNION
SELECT siswa.nama, jurusan.nama_jurusan
FROM siswa
RIGHT JOIN jurusan ON siswa.jurusan_id = jurusan.id;
Hasil:
nama |
nama_jurusan |
Ali |
IPA |
Citra |
IPA |
Budi |
IPS |
Dewi |
NULL |
NULL |
Bahasa |
Menampilkan semua data dari kedua tabel — baik yang cocok maupun yang tidak cocok.
Kesimpulan
Dalam artikel ini, kita sudah belajar tentang empat jenis JOIN utama dalam SQL:
- INNER JOIN: hanya data yang cocok di kedua tabel
- LEFT JOIN: semua data dari tabel kiri, meskipun tidak cocok
- RIGHT JOIN: semua data dari tabel kanan, meskipun tidak cocok
- FULL JOIN: semua data dari kedua tabel (simulasi di MySQL)
Dengan JOIN, kita bisa menggabungkan informasi dari berbagai tabel secara fleksibel dan efisien.
Di artikel selanjutnya, kita akan membahas tentang subquery — yaitu query di dalam query, yang sering digunakan untuk mengambil data secara dinamis berdasarkan kondisi tertentu.
Terima Kasih