Cara Menggunakan JOIN di MySQL untuk Menghubungkan Data Antar Tabel

By | 8 November 2025

Jika kamu sering bekerja dengan database relasional, maka memahami JOIN di MySQL adalah hal yang wajib. JOIN digunakan untuk menghubungkan data antar tabel berdasarkan kolom yang memiliki relasi. Dengan JOIN, kamu bisa menampilkan informasi yang tersebar di beberapa tabel menjadi satu hasil query yang utuh dan informatif. Dalam tutorial ini, kita akan membahas cara menggunakan JOIN di MySQL, mulai dari konsep dasar hingga penerapan dalam query nyata. Kita juga akan melihat jenis-jenis JOIN yang umum digunakan dan contoh penggunaannya untuk membantu kamu memahami fungsinya secara menyeluruh.

Apa Itu JOIN di MySQL?

JOIN adalah perintah SQL yang digunakan untuk menggabungkan baris data dari dua atau lebih tabel berdasarkan kolom yang memiliki relasi (biasanya berupa foreign key).

Sebagai contoh, misalkan kamu punya dua tabel berikut:

Tabel customers

id name city
1 Andi Jakarta
2 Budi Bandung
3 Sinta Surabaya

Tabel orders

id customer_id product total
1 1 Laptop 8500000
2 1 Mouse 150000
3 2 Keyboard 300000

Kedua tabel ini memiliki hubungan antara kolom id di tabel customers dan customer_id di tabel orders. Untuk menampilkan nama pelanggan berserta produknya, kita bisa menggunakan JOIN.

Jenis-Jenis JOIN di MySQL

Ada beberapa jenis JOIN yang bisa digunakan tergantung kebutuhan data. Berikut penjelasan lengkapnya:

1. INNER JOIN

INNER JOIN hanya menampilkan data yang memiliki kecocokan di kedua tabel.

Contoh Query:

SELECT customers.name, orders.product, orders.total
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id;

Hasil:

name product total
Andi Laptop 8500000
Andi Mouse 150000
Budi Keyboard 300000

➡️ Penjelasan:
Hanya pelanggan yang memiliki pesanan yang ditampilkan. Pelanggan tanpa pesanan (misalnya Sinta) tidak muncul di hasil.

2. LEFT JOIN (LEFT OUTER JOIN)

LEFT JOIN menampilkan semua data dari tabel kiri (pertama), dan mencocokkan data dari tabel kanan (kedua). Jika tidak ada kecocokan, kolom dari tabel kanan akan bernilai NULL.

Contoh Query:

SELECT customers.name, orders.product, orders.total
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;

Hasil:

name product total
Andi Laptop 8500000
Andi Mouse 150000
Budi Keyboard 300000
Sinta NULL NULL

➡️ Penjelasan:
LEFT JOIN memastikan semua pelanggan tetap muncul, bahkan jika belum pernah memesan.

3. RIGHT JOIN (RIGHT OUTER JOIN)

Kebalikan dari LEFT JOIN, RIGHT JOIN menampilkan semua data dari tabel kanan dan mencocokkan data dari tabel kiri.

Contoh Query:

SELECT customers.name, orders.product
FROM customers
RIGHT JOIN orders ON customers.id = orders.customer_id;

➡️ Penjelasan:
Jika ada data di tabel orders yang tidak punya pasangan di customers, data tersebut tetap ditampilkan.

4. FULL JOIN (FULL OUTER JOIN)

MySQL tidak memiliki FULL JOIN secara langsung, tetapi kamu bisa menirunya dengan menggunakan UNION antara LEFT JOIN dan RIGHT JOIN.

Contoh Query:

SELECT customers.name, orders.product
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id
UNION
SELECT customers.name, orders.product
FROM customers
RIGHT JOIN orders ON customers.id = orders.customer_id;

➡️ Penjelasan:
Menampilkan semua data dari kedua tabel, baik yang cocok maupun tidak cocok.

5. CROSS JOIN

CROSS JOIN menggabungkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua. Biasanya digunakan untuk keperluan khusus seperti kombinasi data atau pengujian.

Contoh Query:

SELECT customers.name, orders.product
FROM customers
CROSS JOIN orders;

➡️ Penjelasan:
Jika tabel customers memiliki 3 baris dan orders memiliki 3 baris, hasilnya akan ada 9 baris kombinasi.

Tips Penting Menggunakan JOIN di MySQL

Gunakan Alias untuk Kode Lebih Ringkas

SELECT c.name, o.product
FROM customers AS c
INNER JOIN orders AS o ON c.id = o.customer_id;

Pastikan Kolom Relasi Sudah Diindeks

Menambahkan index pada kolom yang digunakan untuk JOIN (id, customer_id) akan mempercepat performa query.

Gunakan WHERE untuk Filter Data

SELECT c.name, o.product, o.total
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id
WHERE o.total > 500000;

Gunakan GROUP BY jika Perlu Pengelompokan
Untuk menampilkan total pembelian per pelanggan:

SELECT c.name, SUM(o.total) AS total_belanja
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id
GROUP BY c.name;

Kesimpulan

Memahami cara menggunakan JOIN di MySQL sangat penting bagi siapa pun yang bekerja dengan database relasional. JOIN memungkinkan kita untuk menggabungkan dan menampilkan data dari beberapa tabel dengan cara yang efisien.

Mulai dari INNER JOIN untuk hasil yang relevan, LEFT JOIN untuk menampilkan semua data dari tabel utama, hingga CROSS JOIN untuk kombinasi total — semuanya memiliki peran penting tergantung kebutuhan aplikasi.

Dengan menguasai JOIN, kamu tidak hanya bisa menulis query yang lebih kompleks, tapi juga meningkatkan efisiensi data retrieval dalam proyek nyata.