🧚 Dengar! Beekeeper Studio adalah GUI database yang cepat, modern, dan open source Unduh
13 Mei 2025 Oleh Matthew Rathbone

Jika Anda pernah mencoba mengambil data dari beberapa tabel MySQL dan merasa bingung, Anda tidak sendirian. Join adalah salah satu konsep yang awalnya tampak menakutkan, tetapi menjadi sangat ampuh setelah Anda memahaminya.

Anggap join sebagai cara untuk memberi tahu MySQL “hei, saya mau mengambil data dari tabel ini DAN tabel itu, tapi hanya jika kondisi tertentu cocok.” Setelah memahami pola dasarnya, Anda akan menggabungkan data seperti seorang pro.

🔖 Referensi Cepat: Butuh contekan cepat? Lihat SQL JOIN Cheat Sheet kami yang berisi semua jenis JOIN, diagram visual, dan contoh kode di satu tempat.

Silsilah Keluarga Join

Pada dasarnya, join memungkinkan Anda menggabungkan baris dari tabel yang berbeda ketika keduanya memiliki kesamaan. Ibaratnya seperti memperkenalkan dua kelompok teman yang punya kenalan bersama.

Berikut jenis-jenis join yang akan kita bahas:

  • INNER JOIN - Hanya tampilkan record yang ada di kedua tabel
  • LEFT JOIN - Tampilkan semua dari tabel kiri, plus yang cocok dari tabel kanan
  • RIGHT JOIN - Kebalikan dari LEFT JOIN (meski jujur saja, kebanyakan orang cukup menukar posisi tabelnya)
  • FULL JOIN - Semua dari kedua tabel (MySQL membuat kita sedikit bekerja keras untuk yang satu ini)
  • CROSS JOIN - Setiap kombinasi yang mungkin (gunakan dengan hati-hati!)
  • SELF JOIN - Saat sebuah tabel perlu berbicara dengan dirinya sendiri

INNER JOIN - Si Perfeksionis

Diagram Venn INNER JOIN yang hanya menampilkan area irisan antara dua tabel

INNER JOIN itu pemilih. Ia hanya memberikan baris yang datanya cocok di kedua tabel. Anggap saja sebagai irisan dalam diagram Venn.

Contoh:

Mari gunakan dua tabel sederhana - employees dan departments:

-- Employees Table
+----+----------+-------------+
| id | name     | department_id|
+----+----------+-------------+
| 1  | Alice    | 1           |
| 2  | Bob      | 2           |
| 3  | Charlie  | NULL        |
+----+----------+-------------+

-- Departments Table
+----+-------------+
| id | department  |
+----+-------------+
| 1  | HR          |
| 2  | IT          |
+----+-------------+

Query INNER JOIN:

SELECT employees.name, departments.department
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

Hasil:

+-------+------------+
| name  | department |
+-------+------------+
| Alice | HR         |
| Bob   | IT         |
+-------+------------+

LEFT JOIN - Si Inklusif

Diagram Venn LEFT JOIN yang menampilkan seluruh tabel kiri plus area irisan

LEFT JOIN lebih murah hati daripada INNER JOIN. Ia berkata “Saya mau semua dari tabel kiri, dan kalau ada yang cocok di tabel kanan, bagus! Kalau tidak, saya isi saja dengan NULL.”

Perhatikan bagaimana Charlie kali ini muncul, meskipun ia tidak punya departemen:

Query LEFT JOIN:

SELECT employees.name, departments.department
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

Hasil:

+---------+------------+
| name    | department |
+---------+------------+
| Alice   | HR         |
| Bob     | IT         |
| Charlie | NULL       |
+---------+------------+

RIGHT JOIN - Sisi Sebaliknya

Diagram Venn RIGHT JOIN yang menampilkan seluruh tabel kanan plus area irisan

RIGHT JOIN hanyalah LEFT JOIN dengan posisi tabel ditukar. Kebanyakan developer menghindarinya dan cukup menyusun ulang klausa FROM - dengan begitu lebih tidak membingungkan.

Query RIGHT JOIN:

SELECT employees.name, departments.department
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;

Hasil:

+-------+------------+
| name  | department |
+-------+------------+
| Alice | HR         |
| Bob   | IT         |
+-------+------------+

FULL JOIN - Pendekatan Semua Masuk

Diagram Venn FULL OUTER JOIN yang menampilkan kedua tabel secara utuh

Di sinilah MySQL agak menyebalkan - MySQL tidak punya FULL JOIN bawaan. Tapi kita bisa memalsukannya dengan trik UNION:

Simulasi FULL JOIN:

SELECT employees.name, departments.department
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id
UNION
SELECT employees.name, departments.department
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;

Hasil:

+---------+------------+
| name    | department |
+---------+------------+
| Alice   | HR         |
| Bob     | IT         |
| Charlie | NULL       |
+---------+------------+

CROSS JOIN - Si Pembuat Kekacauan

Diagram CROSS JOIN yang menampilkan semua kemungkinan kombinasi antar tabel

CROSS JOIN itu seperti teman yang mengajak semua orang berkenalan dengan semua orang lain di sebuah pesta. Ia memasangkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua. Dengan 3 karyawan dan 2 departemen, kita mendapat 6 kombinasi:

Query CROSS JOIN:

SELECT employees.name, departments.department
FROM employees
CROSS JOIN departments;

Hasil:

+-------+------------+
| name  | department |
+-------+------------+
| Alice | HR         |
| Alice | IT         |
| Bob   | HR         |
| Bob   | IT         |
| Charlie | HR       |
| Charlie | IT       |
+-------+------------+

SELF JOIN - Si Introspektif

Self join terjadi saat sebuah tabel mereferensikan dirinya sendiri. Contoh klasiknya adalah tabel karyawan di mana sebagian karyawan menjadi manajer bagi karyawan lain.

Contoh:

Berikut tabel managers di mana mgr_id menunjuk ke baris lain di tabel yang sama:

-- Managers Table
+----+----------+--------+
| id | name     | mgr_id |
+----+----------+--------+
| 1  | Tom      | NULL   |
| 2  | Jerry    | 1      |
| 3  | Spike    | 1      |
+----+----------+--------+

Query SELF JOIN:

SELECT m1.name AS manager, m2.name AS employee
FROM managers m1
LEFT JOIN managers m2 ON m1.id = m2.mgr_id;

Hasil:

+---------+----------+
| manager | employee |
+---------+----------+
| Tom     | Jerry    |
| Tom     | Spike    |
| Jerry   | NULL     |
| Spike   | NULL     |
+---------+----------+

Penutup

Join mungkin terasa membingungkan pada awalnya, tetapi sebenarnya itu hanyalah cara berbeda untuk mengatakan “tampilkan data dari beberapa tabel dengan aturan ini.” Mulailah dengan INNER dan LEFT join - keduanya sudah mencakup 90% kebutuhan Anda.

Cara terbaik agar terbiasa dengan join adalah berlatih dengan data Anda sendiri. Buat beberapa tabel uji, masukkan data contoh, dan mulailah bereksperimen. Tak lama lagi Anda akan menggabungkan tabel ke kiri dan ke kanan (memang sengaja diplesetkan).

Dan ingat: jika join Anda mengembalikan baris jauh lebih banyak dari yang diharapkan, kemungkinan besar Anda tidak sengaja melakukan CROSS JOIN. Kita semua pernah mengalaminya!

Beekeeper Studio Adalah GUI Database Gratis & Open Source

Tool query & editor SQL terbaik yang pernah saya pakai. Semua yang saya butuhkan untuk mengelola database ada di sini. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio cepat, intuitif, dan mudah digunakan. Beekeeper mendukung banyak sekali database, dan berjalan mulus di Windows, Mac, dan Linux.

Versi Linux Beekeeper punya fitur 100% lengkap, tanpa potong kompas, tanpa kompromi fitur.

Apa Kata Pengguna Tentang Beekeeper Studio

★★★★★
"Beekeeper Studio sepenuhnya menggantikan alur kerja SQL lama saya. Cepat, intuitif, dan membuat pekerjaan database kembali menyenangkan."
— Alex K., Database Developer
★★★★★
"Saya sudah mencoba banyak GUI database, tetapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung jalan."
— Sarah M., Full Stack Engineer

Siap Meningkatkan Alur Kerja SQL Anda?

download Unduh Gratis