MySql

Menguasai Seni JOIN di MySQL: INNER, LEFT, dan RIGHT JOIN untuk Analisis Data Efektif

Kuasai INNER, LEFT, RIGHT JOIN MySQL untuk Analisis

Fauzan A Mahanani

Fauzan A Mahanani

Penulis

03 May 2026
9 x dilihat

Sebagai seorang instruktur senior dan pakar industri di bidang MySQL, saya sering melihat para pemula kesulitan dalam memahami dan memanfaatkan kekuatan perintah JOIN. Padahal, JOIN adalah fondasi krusial untuk menggabungkan data dari berbagai tabel, memungkinkan kita mendapatkan wawasan yang lebih kaya dan komprehensif. Artikel ini akan membawa Anda menyelami tiga tipe JOIN yang paling fundamental: INNER JOIN, LEFT JOIN, dan RIGHT JOIN.

Mengapa JOIN Penting?

Dalam database relasional, data seringkali tersebar di beberapa tabel yang saling terkait. Misalnya, sebuah toko online mungkin memiliki tabel pelanggan dan tabel pesanan. Untuk mengetahui pesanan apa saja yang telah dilakukan oleh pelanggan tertentu, kita perlu menggabungkan informasi dari kedua tabel tersebut. Di sinilah JOIN berperan.

Konsep Dasar JOIN

Prinsip dasar JOIN adalah mencocokkan baris dari dua atau lebih tabel berdasarkan kondisi tertentu, biasanya kesamaan nilai pada satu atau lebih kolom yang menjadi kunci relasi antar tabel tersebut. Kolom ini umumnya adalah foreign key pada satu tabel yang merujuk pada primary key di tabel lain.

Mari kita gunakan dua tabel contoh yang sederhana:

Tabel pelanggan:

id_pelanggan nama_pelanggan email
1 Budi budi@example.com
2 Ani ani@example.com
3 Citra citra@example.com

Tabel pesanan:

id_pesanan id_pelanggan tanggal_pesanan total_harga
101 1 2023-10-26 150000
102 1 2023-10-27 200000
103 2 2023-10-27 100000
104 4 2023-10-28 50000

Perhatikan bahwa id_pelanggan di tabel pesanan adalah foreign key yang merujuk ke id_pelanggan di tabel pelanggan.


1. INNER JOIN

INNER JOIN (atau seringkali hanya ditulis JOIN) mengembalikan semua baris ketika ada kecocokan di kedua tabel. Jika ada baris di salah satu tabel yang tidak memiliki kecocokan di tabel lain, baris tersebut akan diabaikan. Ini adalah jenis JOIN yang paling umum digunakan.

Sintaks:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

Contoh Implementasi: Mencari pelanggan yang sudah pernah melakukan pesanan.

SELECT
    p.nama_pelanggan,
    ps.id_pesanan,
    ps.tanggal_pesanan,
    ps.total_harga
FROM
    pelanggan p
INNER JOIN
    pesanan ps ON p.id_pelanggan = ps.id_pelanggan;

Hasil yang Diharapkan:

nama_pelanggan id_pesanan tanggal_pesanan total_harga
Budi 101 2023-10-26 150000
Budi 102 2023-10-27 200000
Ani 103 2023-10-27 100000

Penjelasan:

  • Baris dari pelanggan dengan id_pelanggan 3 (Citra) tidak muncul karena tidak ada pesanan yang terkait dengannya.
  • Baris dari pesanan dengan id_pesanan 104 tidak muncul karena id_pelanggan 4 tidak ada di tabel pelanggan.

2. LEFT JOIN (atau LEFT OUTER JOIN)

LEFT JOIN mengembalikan semua baris dari tabel kiri (tabel pertama yang disebutkan) dan baris yang cocok dari tabel kanan. Jika tidak ada kecocokan dari tabel kanan, kolom dari tabel kanan akan berisi NULL.

Sintaks:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

Contoh Implementasi: Mencari semua pelanggan beserta pesanan mereka. Jika pelanggan belum pernah memesan, tetap tampilkan pelanggannya dengan informasi pesanan NULL.

SELECT
    p.nama_pelanggan,
    ps.id_pesanan,
    ps.tanggal_pesanan,
    ps.total_harga
FROM
    pelanggan p
LEFT JOIN
    pesanan ps ON p.id_pelanggan = ps.id_pelanggan;

Hasil yang Diharapkan:

nama_pelanggan id_pesanan tanggal_pesanan total_harga
Budi 101 2023-10-26 150000
Budi 102 2023-10-27 200000
Ani 103 2023-10-27 100000
Citra NULL NULL NULL

Penjelasan:

  • Semua pelanggan (Budi, Ani, Citra) ditampilkan.
  • Untuk Budi dan Ani, pesanan mereka ikut ditampilkan karena ada kecocokan.
  • Untuk Citra, karena tidak ada pesanan yang terhubung, kolom id_pesanan, tanggal_pesanan, dan total_harga diisi dengan NULL.

Tips Praktis Pemula: Bayangkan tabel kiri sebagai daftar utama Anda. LEFT JOIN memastikan semua item dari daftar utama Anda tetap ada dalam hasil, lalu mencoba mencari padanannya di tabel kanan.


3. RIGHT JOIN (atau RIGHT OUTER JOIN)

RIGHT JOIN adalah kebalikan dari LEFT JOIN. Ia mengembalikan semua baris dari tabel kanan (tabel kedua yang disebutkan) dan baris yang cocok dari tabel kiri. Jika tidak ada kecocokan dari tabel kiri, kolom dari tabel kiri akan berisi NULL.

Sintaks:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

Contoh Implementasi: Mencari semua pesanan beserta informasi pelanggan yang melakukan pesanan tersebut. Jika ada pesanan yang ID pelanggannya tidak terdaftar di tabel pelanggan (kasus data tidak konsisten), pesanan tersebut tetap ditampilkan.

SELECT
    p.nama_pelanggan,
    ps.id_pesanan,
    ps.tanggal_pesanan,
    ps.total_harga
FROM
    pelanggan p
RIGHT JOIN
    pesanan ps ON p.id_pelanggan = ps.id_pelanggan;

Hasil yang Diharapkan:

nama_pelanggan id_pesanan tanggal_pesanan total_harga
Budi 101 2023-10-26 150000
Budi 102 2023-10-27 200000
Ani 103 2023-10-27 100000
NULL 104 2023-10-28 50000

Penjelasan:

  • Semua pesanan (101, 102, 103, 104) ditampilkan.
  • Untuk pesanan 101, 102, 103, nama_pelanggan Budi dan Ani ikut ditampilkan karena ada kecocokan id_pelanggan.
  • Untuk pesanan 104, karena id_pelanggan 4 tidak ada di tabel pelanggan, nama_pelanggan diisi dengan NULL.

Tips Praktis Pemula: RIGHT JOIN seringkali bisa ditulis ulang menjadi LEFT JOIN dengan menukar urutan tabel. Banyak programmer lebih memilih LEFT JOIN karena aliran logika yang lebih umum (memulai dari data utama lalu mencari padanannya). Jadi, jika Anda melihat RIGHT JOIN, cobalah ubah menjadi LEFT JOIN dengan urutan tabel terbalik.


Tipe JOIN Lainnya (Sekilas)

Selain ketiga tipe di atas, MySQL juga mendukung:

  • FULL OUTER JOIN: Mengembalikan semua baris dari kedua tabel. Jika tidak ada kecocokan, sisi yang tidak cocok akan berisi NULL. MySQL secara spesifik tidak memiliki sintaks FULL OUTER JOIN secara langsung, namun dapat disimulasikan menggunakan LEFT JOIN UNION RIGHT JOIN.

Tips Jarang Diketahui untuk Menguasai JOIN

  1. Visualisasikan Data Anda: Sebelum menulis query JOIN, gambarlah struktur tabel dan beberapa baris data. Ini membantu Anda memprediksi hasil dan memahami relasi antar tabel. Tools seperti draw.io atau bahkan kertas dan pena sangat membantu.
  2. Gunakan Alias Tabel: Menggunakan alias tabel (seperti p untuk pelanggan dan ps untuk pesanan di contoh di atas) membuat query lebih ringkas dan mudah dibaca, terutama saat menggabungkan lebih dari dua tabel.
  3. Perhatikan Urutan Tabel: Urutan tabel dalam klausa FROM dan klausa JOIN sangat memengaruhi hasil LEFT dan RIGHT JOIN.
  4. Kondisi ON yang Kompleks: Anda tidak terbatas hanya pada satu kolom di klausa ON. Anda bisa menggunakan beberapa kondisi dengan AND jika relasi antar tabel melibatkan kombinasi kolom. Contoh: ON table1.colA = table2.colA AND table1.colB = table2.colB.
  5. Filter Setelah JOIN (atau Sebelum?):
    • Jika Anda menggunakan INNER JOIN atau LEFT JOIN dan ingin memfilter berdasarkan kolom dari tabel kanan, Anda bisa meletakkan kondisi WHERE setelah JOIN.
    • Jika Anda menggunakan LEFT JOIN dan ingin memfilter berdasarkan kolom dari tabel kiri, sebaiknya letakkan kondisi WHERE di klausa JOIN itu sendiri (misalnya LEFT JOIN table2 ON table1.col = table2.col AND table2.filter_col = 'value'). Mengapa? Karena meletakkan filter di WHERE setelah LEFT JOIN dapat mengubahnya menjadi INNER JOIN jika kondisi filter tersebut mengabaikan baris yang NULL.
  6. JOIN yang Lebih dari Dua Tabel: Anda bisa menggabungkan tiga tabel atau lebih dengan berantai. Contoh: tabelA JOIN tabelB ON ... JOIN tabelC ON .... Setiap JOIN berikutnya menggabungkan tabel baru dengan hasil dari JOIN sebelumnya.

Kesimpulan

Memahami INNER JOIN, LEFT JOIN, dan RIGHT JOIN adalah langkah fundamental dalam menjadi pengguna MySQL yang mahir. INNER JOIN untuk mendapatkan data yang pasti cocok di kedua sisi, LEFT JOIN untuk mempertahankan semua data dari tabel utama Anda, dan RIGHT JOIN (yang seringkali bisa digantikan LEFT JOIN) untuk mempertahankan semua data dari tabel kedua. Dengan latihan dan visualisasi yang tepat, Anda akan segera menguasai seni menggabungkan data dan membuka potensi penuh database Anda. Selamat mencoba!

0.0

Berikan Rating

Komentar (0)

Silakan login untuk memberikan komentar.

Login Sekarang

Belum ada komentar. Jadilah yang pertama!

Pembaca (1)