INNER JOIN dan LEFT JOIN

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_SiswaNama_SiswaNilai
1Andi85
2Budi90

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 SiswaNama_SiswaNilai
1Andi85
2Budi90
3CitraNULL

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_SiswaNama_KelasNilai
AndiX-A85
BudiX-B90
CitraX-ANULL

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

    Mungkin Anda Menyukai

    Tinggalkan Balasan

    Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *