INNER JOIN di SQL

Menggabungkan dua tabel dan hanya menampilkan baris yang punya pasangan di kedua tabel.

Penjelasan sederhana

Di database, data biasanya dipecah ke beberapa tabel. Tabel karyawan hanya menyimpan nomor departemen (dept_id), sedangkan nama departemennya ada di tabel departemen. JOIN menyatukan keduanya, mirip VLOOKUP di Excel.

INNER JOIN hanya menampilkan baris yang punya pasangan di kedua tabel. Bayangkan mencocokkan daftar tamu dengan daftar meja: yang muncul hanya tamu yang sudah dapat meja, dan meja yang ada tamunya.

Kolom penghubungnya ditulis setelah ON, misalnya k.dept_id = d.id yang artinya "nomor departemen di tabel karyawan sama dengan id di tabel departemen".

Sintaks

SELECT a.kolom, b.kolom
FROM tabel_a AS a
INNER JOIN tabel_b AS b
  ON a.kunci = b.kunci;
BagianKeterangan
ON a.kunci = b.kunciSyarat pasangan: kolom yang menghubungkan kedua tabel.
INNERBoleh ditulis JOIN saja; artinya sama.

Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.

Contoh INNER JOIN

Data contoh: karyawan, departemen

Tabel karyawan

idnamadept_idkotagajitgl_masukatasan_id
1 Andi Pratama 3 Bandung 12500000 2019-03-11 NULL
2 Bunga Lestari 1 Jakarta 9800000 2020-07-01 NULL
3 Candra Wijaya 3 Bandung 8200000 2021-02-15 1
4 Dewi Anggraini 2 Jakarta 7500000 2022-05-09 6
5 Eko Saputra 1 Jakarta 6900000 2023-01-16 2
6 Fajar Nugroho 2 Surabaya 11000000 2018-09-03 NULL
7 Gita Permata 3 Jakarta 8200000 2023-08-21 1
8 Hendra Gunawan NULL Medan 5500000 2024-04-02 NULL

Tabel departemen

idnama_deptlokasi
1 Keuangan Jakarta
2 Marketing Jakarta
3 IT Bandung
4 Legal Surabaya
query.sql
SELECT k.nama, d.nama_dept
FROM karyawan AS k
INNER JOIN departemen AS d
  ON k.dept_id = d.id;
>_ Jalankan & ubah query ini di browser

Hasil 7 baris

namanama_dept
Andi Pratama IT
Bunga Lestari Keuangan
Candra Wijaya IT
Dewi Anggraini Marketing
Eko Saputra Keuangan
Fajar Nugroho Marketing
Gita Permata IT

Hendra (tanpa departemen) dan departemen Legal (tanpa karyawan) tidak muncul karena tidak punya pasangan.

Cara kerjanya, langkah demi langkah

  1. FROM karyawan AS k: 8 baris karyawan diambil.
  2. INNER JOIN departemen AS d ON k.dept_id = d.id: untuk setiap karyawan, dicari departemen yang id-nya sama dengan dept_id karyawan itu.
  3. Andi (dept_id 3) dipasangkan dengan IT, Bunga (dept_id 1) dengan Keuangan, dan seterusnya.
  4. Hendra dept_id-nya kosong, jadi tidak punya pasangan dan dibuang. Departemen Legal tidak punya karyawan, jadi juga tidak muncul.
  5. Hasilnya 7 baris.

Dipakai untuk apa di kantor?

  • Menampilkan transaksi beserta nama pelanggan dan nama produknya.
  • Menggabungkan data karyawan dengan data departemen atau cabang.

Kesalahan yang sering terjadi

  • Lupa menulis ON. Tanpa syarat pasangan, setiap baris dipasangkan dengan semua baris tabel lain, dan hasilnya membengkak.
  • Memakai INNER JOIN padahal ingin semua data tetap tampil. Data tanpa pasangan hilang diam-diam. Pakai LEFT JOIN.
Progres bab Gabung Tabel (JOIN) 0/7 dipelajari
Lanjut: LEFT JOIN

Belajar SQL bareng mentor

Hafal sintaks itu mudah. Menjawab pertanyaan bisnis, itu skill.

Private Class Python & SQL untuk Data: dari query dasar sampai JOIN dan studi kasus kerja, dengan kurikulum dan jadwal yang menyesuaikan kamu.

Lihat Private Class