MySQL Join Tutorial: Master Cara Gabung Tabel dengan Santai & Anti Pusing!

By | September 27, 2025

 

MySQL Join Tutorial: Master Cara Gabung Tabel dengan Santai & Anti Pusing!

Pernah nggak kamu mengalami situasi ini: kamu punya data pelanggan di satu tabel, terus data pesanan di tabel lain. Lalu bos minta laporan “tampilkan semua pesanan beserta nama pelanggannya”. Kamu pun kebingungan, bagaimana caranya menyatukan data dari dua tabel yang terpisah ini? Jika iya, selamat! Kamu baru saja menemukan alasan terbesar untuk mempelajari MySQL Join.

Join dalam MySQL itu seperti menjadi detektif yang menghubungkan petunjuk-petunjuk dari berbagai sumber. Atau ibaratnya, kamu punya puzzle yang kepingannya tersebar di beberapa kotak berbeda. Fungsi JOIN-lah yang akan membantumu menyatukan kepingan puzzle tersebut menjadi gambar yang utuh dan bermakna. Tutorial ini akan membahasnya dengan gaya santai, pakai analogi sehari-hari, dan pastinya dengan contoh kode yang mudah dicerna. Siap-siap ya, konsep JOIN ini sebenarnya seru banget, lho!

Sebelum Join, Kenali Dulu “Kunci” untuk Menghubungkan Tabel

Analoginya gini: mau nyambungin kereta, kan butuh coupler (penyambung) khusus. Nah, di database, “penyambung”-nya adalah Key atau kunci. Ada dua jenis kunci yang paling penting untuk JOIN:

  • Primary Key (Kunci Primer): Ini seperti KTP atau NIM. Nilainya unik untuk setiap baris dalam satu tabel dan menjadi identitas utama. Misalnya, customer_id di tabel customers.
  • Foreign Key (Kunci Asing): Ini adalah Primary Key dari tabel lain yang disimpan di tabel ini untuk membuat hubungan. Misalnya, customer_id di tabel orders. Dia merujuk ke si empunya identitas, yaitu di tabel customers.

Tanpa memahami kedua konsep ini, JOIN akan terasa seperti menyambung kereta tanpa alat penyambung yang tepat—berantakan!

Setup Contoh Tabel: Cerita Toko Online “Jaya Makmur”

Biar kita punya konteks yang sama, bayangkan kita punya database toko online sederhana dengan dua tabel:

Tabel `customers` (Para Pelanggan):

customer_id customer_name city
101 Budi Santoso Jakarta
102 Sari Dewi Bandung
103 Ahmad Fauzi Surabaya

Tabel `orders` (Daftar Pesanan):

 

order_id order_date amount customer_id
1 2023-10-01 250000 101
2 2023-10-02 150000 103
3 2023-10-05 500000 101
4 2023-10-08 75000 105

Nah, perhatikan bahwa kolom customer_id di tabel orders adalah Foreign Key yang merujuk ke customer_id (Primary Key) di tabel customers. Sekarang, mari kita jelajahi berbagai jenis JOIN!

INNER JOIN: Hanya Pertemukan yang Cocok dari Kedua Tabel

INNER JOIN adalah jenis JOIN yang paling sering digunakan. Cara kerjanya sederhana: dia hanya akan menampilkan baris-baris yang memiliki kecocokan di kedua tabel. Kalau di tabel A ada, tapi di tabel B nggak ada (atau sebaliknya), maka data itu akan diabaikan.

Contoh Pertanyaan: “Tampilkan semua pesanan yang lengkap dengan nama pelanggannya.”

SELECT orders.order_id, orders.order_date, customers.customer_name, orders.amount
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

Hasil Query:

order_id order_date customer_name amount
1 2023-10-01 Budi Santoso 250000
2 2023-10-02 Ahmad Fauzi 150000
3 2023-10-05 Budi Santoso 500000

Perhatikan! Pesanan dengan order_id 4 (customer_id 105) TIDAK muncul karena customer_id 105 tidak ditemukan di tabel customers. INNER JOIN sangat ketat, hanya yang punya “pasangan” yang boleh ikut.

Analoginya: INNER JOIN itu seperti Pesta Dansa Berpasangan

Bayangkan INNER JOIN seperti pesta dansa dimana setiap orang harus punya pasangan untuk bisa masuk ke lapangan dansa. Kalau ada orang yang datang sendirian (data di tabel A tanpa pasangan di tabel B), dia tidak boleh masuk. Begitu pula sebaliknya.

LEFT JOIN: Prioritaskan Tabel Sebelah Kiri, Meski Sendirian

Nah, kalau LEFT JOIN ini lebih “baik hati”. Dia akan menampilkan semua data dari tabel pertama (kiri), meskipun tidak ada kecocokan di tabel kedua (kanan). Untuk baris yang tidak punya pasangan, kolom dari tabel kanan akan berisi nilai NULL.

Contoh Pertanyaan: “Tampilkan semua pelanggan, beserta pesanan yang pernah mereka buat (jika ada).”

SELECT customers.customer_name, customers.city, orders.order_id, orders.order_date
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;

Hasil Query:

customer_name city order_id order_date
Budi Santoso Jakarta 1 2023-10-01
Budi Santoso Jakarta 3 2023-10-05
Sari Dewi Bandung NULL NULL
Ahmad Fauzi Surabaya 2 2023-10-02

Lihat? Sari Dewi tetap ditampilkan meskipun belum pernah melakukan pesanan (order_id dan order_date-nya NULL). LEFT JOIN sangat berguna untuk menemukan data yang “hilang”, seperti “pelanggan mana yang belum pernah memesan?”

Analoginya: LEFT JOIN itu seperti Daftar Hadir Kelas

LEFT JOIN itu seperti daftar semua siswa di kelas (tabel kiri). Lalu, guru mencatat nilai ujian (tabel kanan) di sebelah nama mereka. Siswa yang sakit dan tidak ikut ujian (tidak ada datanya di tabel nilai) namanya tetap tercantum di daftar, tapi kolom nilainya dikosongkan.

RIGHT JOIN: Kebalikan dari LEFT JOIN

RIGHT JOIN adalah kebalikan persis dari LEFT JOIN. Dia akan menampilkan semua data dari tabel kedua (kanan), meskipun tidak ada kecocokan di tabel pertama (kiri). Penggunaannya jarang karena biasanya kita bisa membalik urutan tabel dan menggunakan LEFT JOIN untuk hasil yang sama (dan lebih mudah dibaca).

Contoh Pertanyaan (menggunakan RIGHT JOIN): “Tampilkan semua pesanan, dan tunjukkan informasi pelanggannya jika ada.”

SELECT orders.order_id, orders.amount, customers.customer_name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.customer_id;

Query ini akan menghasilkan data yang mirip dengan LEFT JOIN tapi dengan urutan tabel yang dibalik. Dalam praktiknya, programmer lebih sering menggunakan LEFT JOIN.

FULL OUTER JOIN: Tampilkan Semuanya, Baik yang Punya Pasangan Maupun Tidak

FULL OUTER JOIN adalah kombinasi dari LEFT dan RIGHT JOIN. Dia akan menampilkan semua baris dari kedua tabel. Jika ada kecocokan, bagus. Jika tidak, kolom dari tabel yang tidak memiliki data akan diisi NULL.

Penting: MySQL tidak mendukung sintaks FULL OUTER JOIN secara native. Tapi kita bisa mensimulasikannya dengan menggabungkan LEFT JOIN dan RIGHT JOIN menggunakan UNION.

-- Simulasi FULL OUTER JOIN di MySQL
SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
UNION
SELECT customers.customer_name, orders.order_id
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

Kapan Harus Menggunakan Jenis JOIN yang Tepat?

Bingung memilih? Panduan sederhana ini bisa membantu:

Jenis JOIN Gunakan ketika kamu ingin… Contoh Pertanyaan Bisnis
INNER JOIN Hanya data yang punya hubungan di kedua tabel. “Tampilkan produk yang benar-benar telah terjual.”
LEFT JOIN Semua data dari tabel utama, dan data terkait (jika ada) dari tabel lain. “Tampilkan semua karyawan dan proyek yang mereka kerjakan (termasuk yang belum dapat proyek).”
RIGHT JOIN Semua data dari tabel sekunder, dan data terkait dari tabel utama. (Jarang digunakan). “Tampilkan semua postingan blog dan komentarnya (termasuk postingan yang belum dikomentari).”

Kesimpulan: JOIN itu Mudah Kalau Sudah Tahu Konsepnya!

Seperti yang sudah kita jelajahi, MySQL Join bukanlah monster yang menyeramkan. Dia adalah alat yang sangat logis dan powerful untuk menyatukan data yang terkait. Kunci utamanya adalah:

  1. Pahami hubungan antara tabel lewat Primary Key dan Foreign Key.
  2. Tentukan tujuanmu: Mau lihat data yang berhubungan saja (INNER JOIN) atau semua data dari satu sisi meski tidak berhubungan (LEFT JOIN)?
  3. Praktik, praktik, praktik! Coba buat tabel-tabel sederhana dan eksperimen dengan berbagai jenis JOIN.

Dengan menguasai JOIN, laporan-laporan database yang dulu terlihat rumit tiba-tiba menjadi mudah dibuat. Selamat mencoba, dan selamat menikmati kekuatan baru kamu dalam mengolah data!