LEFT JOIN di SQL

Menampilkan semua baris dari tabel kiri, ditambah data dari tabel kanan jika ada pasangannya. Jika tidak ada, kolom kanan berisi NULL.

Penjelasan sederhana

LEFT JOIN mempertahankan semua baris dari tabel kiri (yang ditulis setelah FROM), lalu menempelkan data dari tabel kanan kalau ada pasangannya. Kalau tidak ada pasangan, kolom dari tabel kanan diisi NULL (kosong).

Ini mirip VLOOKUP yang hasilnya #N/A untuk data yang tidak ketemu: barisnya tetap ada, hanya kolom tambahannya kosong. Karena tidak ada data yang hilang, LEFT JOIN adalah jenis JOIN yang paling sering dipakai analis data.

Sintaks

SELECT a.kolom, b.kolom
FROM tabel_a AS a
LEFT JOIN tabel_b AS b
  ON a.kunci = b.kunci;
BagianKeterangan
tabel kiriTabel setelah FROM. Semua barisnya dipertahankan.
tabel kananTabel setelah LEFT JOIN. Hanya baris yang cocok yang diambil.

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 LEFT 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
LEFT JOIN departemen AS d
  ON k.dept_id = d.id;
>_ Jalankan & ubah query ini di browser

Hasil 8 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 Gunawan NULL

Semua 8 karyawan muncul. Hendra tetap tampil dengan nama_dept NULL.

Cara kerjanya, langkah demi langkah

  1. FROM karyawan AS k: 8 karyawan diambil sebagai tabel kiri. Semuanya pasti muncul di hasil.
  2. LEFT JOIN departemen AS d ON k.dept_id = d.id: untuk tiap karyawan, dicari departemen yang cocok.
  3. Tujuh karyawan menemukan departemennya.
  4. Hendra tidak punya dept_id, jadi tidak menemukan pasangan. Ia tetap ditampilkan dengan nama_dept NULL.
  5. Hasilnya 8 baris, sama dengan jumlah karyawan.

Dipakai untuk apa di kantor?

  • Menampilkan semua pelanggan beserta total belanjanya, termasuk yang belum pernah belanja.
  • Mencari data yang belum punya pasangan, misalnya produk yang belum pernah terjual.

Kesalahan yang sering terjadi

  • Menaruh syarat untuk tabel kanan di WHERE, misalnya WHERE d.lokasi = 'Jakarta'. Baris NULL ikut terbuang dan hasilnya berubah jadi seperti INNER JOIN. Taruh syaratnya di ON.
  • Tertukar urutan tabel. Tabel yang ingin dipertahankan semua barisnya harus ditulis di FROM.
Progres bab Gabung Tabel (JOIN) 0/7 dipelajari
Lanjut: RIGHT 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