2. Inner Join

INNER JOIN adalah salah satu jenis join dalam SQL yang digunakan untuk menggabungkan baris dari dua atau lebih tabel berdasarkan kondisi yang ditentukan. Pada INNER JOIN, hanya baris yang memiliki nilai yang cocok di kedua tabel yang akan ditampilkan dalam hasil query. Jika tidak ada kecocokan, baris tersebut akan diabaikan.

Rumus INNER JOIN

Inner JOIN
SELECT kolom1, kolom2, ...
FROM tabel1
INNER JOIN tabel2
ON tabel1.kolom = tabel2.kolom;

Penjelasan

  • SELECT : Memilih kolom-kolom yang ingin ditampilkan dari kedua tabel.
  • FROM : Memilih tabel pertama.
  • INNER JOIN : Menggabungkan tabel kedua.
  • ON : Menentukan kondisi penggabungan antar-tabel (biasanya relasi kunci primer dan kunci asing).

Contoh soal:

Terdapat tabel mahasiswa :

tabel mahasiswa
CREATE TABLE Mahasiswa (
    id_mahasiswa INT PRIMARY KEY,
    nama VARCHAR(100),
    jurusan VARCHAR(100)
);

INSERT INTO Mahasiswa (id_mahasiswa, nama, jurusan)
VALUES
(1, 'Andi', 'Informatika'),
(2, 'Budi', 'Akuntansi'),
(3, 'Cici', 'Informatika'),
(4, 'Dodi', 'Akuntansi');
id_mahasiswa nama jurusan
1 Andi Informatika
2 Budi Akuntansi
3 Cici Informatika
4 Dodi Akuntansi

dan terdapat tabel Nilai:

tabel nilai
CREATE TABLE Nilai (
    id_nilai INT PRIMARY KEY,
    id_mahasiswa INT,
    mata_kuliah VARCHAR(100),
    nilai CHAR(1),
    FOREIGN KEY (id_mahasiswa) REFERENCES Mahasiswa(id_mahasiswa)
);

INSERT INTO Nilai (id_nilai, id_mahasiswa, mata_kuliah, nilai)
VALUES
(1, 1, 'Matematika', 'A'),
(2, 1, 'Fisika', 'B'),
(3, 2, 'Akuntansi', 'A'),
(4, 3, 'Matematika', 'A'),
(5, 4, 'Ekonomi', 'B');
id_nilai id_mahasiswa mata_kuliah nilai
1 1 Matematika A
2 1 Fisika B
3 2 Akuntansi A
4 3 Matematika A
5 4 Ekonomi B

Keterangan

  • Untuk membuat tabel kita harus membuat kolomnya terlebih dahulu id_mahasiswa INT baru bisa di tambahkan index FOREIGN KEY nya
  • Untuk melakukan join dibutuhkan index FOREIGN KEY yang mengambil referensi dari tabel aslinya

Bagaimana caranya menyatukan ke 2 tabel di atas untuk menampilkannya hanya dalam 1 tabel sehingga dapat tampil seperti tabel dibawah ini:

nama mata_kuliah nilai
Andi Matematika A
Andi Fisika B
Budi Akuntansi A
Cici Matematika A
Dodi Ekonomi B
JOIN
SELECT Mahasiswa.nama, Nilai.mata_kuliah, Nilai.nilai
FROM Mahasiswa
INNER JOIN Nilai
ON Mahasiswa.id_mahasiswa = Nilai.id_mahasiswa;

Pada contoh di atas, SQL INNER JOIN menggabungkan tabel Mahasiswa dan Nilai berdasarkan kolom id_mahasiswa yang ada di kedua tabel. Hanya mahasiswa yang memiliki nilai dalam tabel Nilai yang ditampilkan, dan hasilnya adalah kombinasi data mahasiswa dengan mata kuliah serta nilai mereka.

Contoh lainnya dalam sebuah website :

Dari gambar di atas kita dapat menganalisa bahwasannya ada 2 buah tabel yakni Blog dan User. Blog terdiri dari gambar, tanggal, judul, isi, created_by sedangkan user terdiri dari id dan nama kalau di query bisa seperti ini:

JOIN
SELECT Blog.*, User.nama
FROM Blog
INNER JOIN User
ON Mahasiswa.created_by = User.id;

Soal

  1. Dalam sebuah aplikasi HRD, ada tabel Karyawan dan Proyek yang dikerjakan oleh karyawan.

    id_karyawan nama_karyawan departemen
    1 Andi IT
    2 Budi Finance
    id_proyek id_karyawan nama_proyek
    1 1 Aplikasi Mobile
    2 2 Laporan Keuangan

    dari ke 2 tabel tersebut tampilkan nama, departemen dan nama proyek yang dikerjakan

  2. Analisa Gambar dibawah ini ada berapa tabel dan apa saja isinya lalu buatkan query inner joinnya :