Apa itu JOIN?
JOIN adalah perintah dalam SQL yang digunakan untuk menggabungkan data dari dua atau lebih tabel berdasarkan kolom yang saling berhubungan (relasi).
Biasanya relasi terjadi antara:
Primary Key (di tabel utama)
Foreign Key (di tabel lain)
Apakah JOIN Harus Primary Key & Foreign Key?
Tidak harus
JOIN tidak wajib menggunakan Primary Key (PK) dan Foreign Key (FK).
JOIN bisa dilakukan pada kolom apa saja, selama tipe datanya kompatibel dan nilainya bisa dibandingkan
Bagaimana Jika Kolom JOIN Bernilai NULL?
Ini bagian yang sering membingungkan. Konsep penting di SQL:
NULL ≠ NULL
Artinya:
NULL tidak dianggap sama dengan NULL
Perbandingan = tidak akan pernah cocok jika yang dibandingkan bernilai NULL
Tujuan JOIN
Mengambil data yang tersebar di beberapa tabel
Menghindari duplikasi data
Menyusun informasi menjadi lebih lengkap
Sebelum melanjutkan pembahasan, kita siapkan tabel beserta data yang akan digunakan sebagai contoh. Kita membuat tabel Siswa dan Nilai_Siswa sebagai berikut:
CREATE TABLE Siswa
(
ID_Siswa INT PRIMARY KEY,
Nama_Siswa VARCHAR(50)
);
CREATE TABLE Nilai_Siswa
(
ID_Nilai INT PRIMARY KEY,
ID_Siswa INT,
Nilai INT,
FOREIGN KEY (ID_Siswa) REFERENCES Siswa(ID_Siswa)
);
Isikan data pada masing-masing tabel sebagai berikut:
INSERT INTO Siswa (ID_Siswa, Nama_Siswa) VALUES
(1, 'Andi'),
(2, 'Budi'),
(3, 'Citra');
INSERT INTO Nilai_Siswa (ID_Nilai, ID_Siswa, Nilai) VALUES
(101, 1, 85),
(102, 2, 90);
Dari sini terlihat bahwa:
Andi mempunyai nilai
Budi mempunyai nilai
Citra tidak mempunyai nilai
Selanjutnya kita lanjutkan pembahasan mengenai jenis-jenis join.
INNER JOIN
Pengertian
INNER JOIN digunakan untuk mengambil data yang memiliki pasangan di kedua tabel (data yang cocok saja).
Pada contoh di atas jika ada siswa yang tidak memiliki nilai, maka tidak akan ditampilkan.
Contoh Query
SELECT
S.ID_Siswa,
S.Nama_Siswa,
N.Nilai
FROM Siswa S
INNER JOIN Nilai_Siswa N
ON S.ID_Siswa = N.ID_Siswa;
Hasil Output
| ID_Siswa | Nama_Siswa | Nilai |
| 1 | Andi | 85 |
| 2 | Budi | 90 |
Penjelasan
Menggabungkan tabel Siswa dan Nilai_Siswa
Hanya menampilkan siswa yang memiliki data nilai
Citra tidak muncul karena tidak punya nilai
LEFT JOIN (LEFT OUTER JOIN)
Pengertian
LEFT JOIN digunakan untuk mengambil semua data dari tabel kiri (Siswa) dan data yang cocok dari tabel kanan (Nilai_Siswa).
Jika ada siswa yang tidak memiliki nilai, tetap akan ditampilkan dengan nilai NULL.
Pengertian Tabel Kiri (Left Table)
Tabel kiri adalah tabel yang ditulis di sebelah kiri kata JOIN.
Contoh:
FROM Siswa S
LEFT JOIN Nilai_Siswa N
Maka:
Siswa = tabel kiri
Nilai_Siswa = tabel kanan
Fungsi Tabel Kiri
Pada LEFT JOIN, semua data dari tabel kiri pasti ditampilkan
Tabel kanan hanya sebagai pelengkap (jika ada pasangan)
Contoh Query
SELECT
S.ID_Siswa,
S.Nama_Siswa,
N.Nilai
FROM Siswa S
LEFT JOIN Nilai_Siswa N
ON S.ID_Siswa = N.ID_Siswa;
Hasil Output
| ID Siswa | Nama_Siswa | Nilai |
| 1 | Andi | 85 |
| 2 | Budi | 90 |
| 3 | Citra | NULL |
Penjelasan
Semua data dari tabel Siswa ditampilkan
Citra tetap tampil meskipun tidak punya nilai (NULL)
Perbedaan INNER JOIN vs LEFT JOIN
Aspek INNER JOIN LEFT JOIN
Data ditampilkan Hanya yang cocok Semua data tabel kiri
Data tanpa relasi Tidak ditampilkan Tetap ditampilkan (NULL)
Kegunaan Data relasi lengkap Cek data yang belum memiliki relasi
JOIN Lebih dari Dua Tabel
JOIN bisa digunakan untuk menggabungkan lebih dari dua tabel.
Contoh Tambahan Tabel Kelas
CREATE TABLE Kelas (
ID_Kelas INT PRIMARY KEY,
Nama_Kelas VARCHAR(50)
);
ALTER TABLE Siswa
ADD ID_Kelas INT;
Insert Data
INSERT INTO Kelas (ID_Kelas, Nama_Kelas) VALUES
(10, 'X-A'),
(20, 'X-B');
UPDATE Siswa SET ID_Kelas = 10 WHERE ID_Siswa = 1;
UPDATE Siswa SET ID_Kelas = 20 WHERE ID_Siswa = 2;
UPDATE Siswa SET ID_Kelas = 10 WHERE ID_Siswa = 3;
Contoh query JOIN 3 Tabel:
SELECT
S.Nama_Siswa,
K.Nama_Kelas,
N.Nilai
FROM Siswa S
LEFT JOIN Nilai_Siswa N
ON S.ID_Siswa = N.ID_Siswa
LEFT JOIN Kelas K
ON S.ID_Kelas = K.ID_Kelas;
Hasil Output
| Nama_Siswa | Nama_Kelas | Nilai |
| Andi | X-A | 85 |
| Budi | X-B | 90 |
| Citra | X-A | NULL |
Penjelasan
Join dilakukan berurutan dari kiri ke kanan
Bisa menggabungkan banyak tabel selama ada relasi
Tetap berlaku konsep:
LEFT JOIN maka semua data kiri ditampilkan
INNER JOIN maka hanya yang cocok ditampilkan
Kesimpulan
- Pada INNER JOIN menampilkan hanya data yang cocok di kedua tabel
- Pada LEFT JOIN menampilkan semua data tabel kiri beserta pasangan dari kanan
- Tabel kiri adalah tabel utama yang dijadikan acuan hasil yang dituliskan terlebih dahulu sebelum klausa JOIN
- JOIN dapat dilakukan untuk lebih dari dua tabel secara berantai sesuai kebutuhan relasi
Slide materi dapat dilihat di sini
