Halo sobat data! Saat kamu bekerja dengan database relasional (seperti MySQL, PostgreSQL, atau SQL Server), data hampir tidak pernah disimpan dalam satu tabel tunggal yang raksasa. Biasanya, data dipecah ke beberapa tabel terpisah agar rapi dan tidak ada duplikasi data.
Misalnya, data pengguna disimpan di tabel users, transaksi belanja di tabel orders, dan rincian produk di tabel products. Nah, pertanyaan pentingnya: bagaimana cara menyatukan kembali data tersebut saat kita butuh laporan lengkap?
Jawabannya adalah menggunakan perintah SQL JOIN. Yuk, kita bedah konsep, langkah-langkah praktis, serta bukti eksekusinya langsung melalui screenshot hasil pengujian!
SQL JOIN adalah klausa yang digunakan untuk menggabungkan baris dari dua tabel atau lebih berdasarkan kolom kunci yang berhubungan (biasanya melalui Primary Key dan Foreign Key).
Langkah 1: Persiapan Data Sampel
Sebelum menjalankan kueri, mari kita persiapkan empat tabel sampel di database beserta data uji cobanya.
1. Tabel users (Data Pelanggan)
| user_id | name | city |
|---|---|---|
| 1 | Budi | Jakarta |
| 2 | Ani | Bandung |
| 3 | Cici | Surabaya |
2. Tabel orders (Data Pesanan)
| order_id | user_id | product | amount |
|---|---|---|---|
| 101 | 1 | Laptop | Rp 12.000.000 |
| 102 | 1 | Mouse | Rp 250.000 |
| 103 | 2 | Keyboard | Rp 500.000 |
| 104 | 4 | Monitor | Rp 2.000.000 |
3. Tabel products (Data Produk)
| product_id | product_name | category_id |
|---|---|---|
| 1 | Laptop | 10 |
| 2 | Mouse | 20 |
| 3 | Keyboard | 20 |
4. Tabel categories (Data Kategori)
| category_id | category_name |
|---|---|
| 10 | Elektronik |
| 20 | Aksesoris Komputer |
Langkah 1.1: Script SQL Pembuatan Database & Tabel
Sebelum menjalankan kueri JOIN, kamu perlu membuat database beserta 4 tabel pendukungnya terlebih dahulu di MySQL Client. Salin dan jalankan script SQL lengkap di bawah ini:
Script ini akan membuat database toko_online, membuat 4 tabel relasional, serta memasukkan data sampel uji coba.
-- 1. Membuat & Menggunakan Database
CREATE DATABASE IF NOT EXISTS toko_online;
USE toko_online;
-- 2. Membersihkan Tabel Lama (jika ada)
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS products;
DROP TABLE IF EXISTS categories;
DROP TABLE IF EXISTS users;
-- 3. Membuat Tabel Users
CREATE TABLE users (
user_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
city VARCHAR(50) NOT NULL
);
-- 4. Membuat Tabel Categories
CREATE TABLE categories (
category_id INT PRIMARY KEY,
category_name VARCHAR(50) NOT NULL
);
-- 5. Membuat Tabel Products
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(50) NOT NULL,
category_id INT,
FOREIGN KEY (category_id) REFERENCES categories(category_id)
);
-- 6. Membuat Tabel Orders
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
product VARCHAR(50) NOT NULL,
amount DECIMAL(12, 2) NOT NULL
);
-- 7. Insert Data Sampel Ke Tabel Users
INSERT INTO users (user_id, name, city) VALUES
(1, 'Budi', 'Jakarta'),
(2, 'Ani', 'Bandung'),
(3, 'Cici', 'Surabaya');
-- 8. Insert Data Sampel Ke Tabel Categories
INSERT INTO categories (category_id, category_name) VALUES
(10, 'Elektronik'),
(20, 'Aksesoris Komputer');
-- 9. Insert Data Sampel Ke Tabel Products
INSERT INTO products (product_id, product_name, category_id) VALUES
(1, 'Laptop', 10),
(2, 'Mouse', 20),
(3, 'Keyboard', 20);
-- 10. Insert Data Sampel Ke Tabel Orders
SET FOREIGN_KEY_CHECKS = 0;
INSERT INTO orders (order_id, user_id, product, amount) VALUES
(101, 1, 'Laptop', 12000000.00),
(102, 1, 'Mouse', 250000.00),
(103, 2, 'Keyboard', 500000.00),
(104, 4, 'Monitor', 2000000.00);
SET FOREIGN_KEY_CHECKS = 1;Langkah 2: Menguji 4 Jenis Utama SQL JOIN
1. INNER JOIN (Hanya Data yang Cocok)
Tulis kueri berikut untuk mengambil data pengguna yang memiliki transaksi pesanan aktif di kedua tabel.
SELECT users.name, orders.product, orders.amount
FROM users
INNER JOIN orders ON users.user_id = orders.user_id;Output :

Penjelasan Hasil: Hanya Budi dan Ani yang muncul karena user_id mereka terdaftar di tabel users dan tercatat di tabel orders.
2. LEFT JOIN (Semua Data Tabel Kiri)
Jalankan kueri di bawah ini untuk menampilkan semua pengguna, termasuk yang belum pernah melakukan belanja.
SELECT users.name, orders.product, orders.amount
FROM users
LEFT JOIN orders ON users.user_id = orders.user_id;Output :
Mau Kuasai SQL JOIN: Cara Mudah Gabungkan 2 Tabel atau Lebih Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →

NULL.Penjelasan Hasil: Cici (user_id 3) tetap ditampilkan di hasil kueri, tetapi kolom product dan amount-nya bernilai NULL karena belum ada riwayat pesanan.
3. RIGHT JOIN (Semua Data Tabel Kanan)
Jalankan kueri berikut jika ingin memastikan semua transaksi belanja tercatat, meskipun ID penggunanya tidak ditemukan.
SELECT users.name, orders.product, orders.amount
FROM users
RIGHT JOIN orders ON users.user_id = orders.user_id;Output :

Penjelasan Hasil: Transaksi Monitor (order_id 104) tetap tercetak di laporan, namun nama pengguna bernilai NULL karena user_id 4 belum terdaftar.
4. FULL JOIN (Gabungan Seluruh Data)
Menampilkan seluruh data dari kedua tabel. Catatan untuk MySQL: Karena MySQL tidak mendukung klausa FULL JOIN secara langsung, gunakan kombinasi LEFT JOIN dan RIGHT JOIN dengan UNION.
-- Kueri khusus MySQL:
SELECT users.name, orders.product, orders.amount
FROM users
LEFT JOIN orders ON users.user_id = orders.user_id
UNION
SELECT users.name, orders.product, orders.amount
FROM users
RIGHT JOIN orders ON users.user_id = orders.user_id;
-- Sintaks standar (PostgreSQL / SQL Server / Oracle):
-- SELECT users.name, orders.product, orders.amount
-- FROM users
-- FULL JOIN orders ON users.user_id = orders.user_id;Output :

Langkah 3: Menggabungkan Lebih dari 2 Tabel
Untuk menggabungkan 3 tabel atau lebih, cukup berantai tambahkan klausa JOIN beserta relasi kunci penghubungnya (ON).
SELECT
users.name AS nama_pembeli,
products.product_name,
categories.category_name
FROM orders
JOIN users ON orders.user_id = users.user_id
JOIN products ON orders.product_id = products.product_id
JOIN categories ON products.category_id = categories.category_id;Output :

Tips Penting Saat Menggunakan JOIN
- Gunakan Alias Tabel: Singkat nama tabel agar kueri lebih ringkas (contoh:
FROM users u JOIN orders o). - Sebutkan Nama Tabel Secara Spesifik: Selalu tulis
users.user_idalih-alih hanyauser_iduntuk menghindari error ambiguous column. - Pilih JOIN yang Sesuai: Jika cuma ingin analisis data belanja yang valid, gunakan
INNER JOIN. Jika ingin tahu pengguna mana yang belum pernah belanja, gunakanLEFT JOIN.
SQL JOIN adalah kunci utama untuk menghubungkan potongan-potongan data terpisah di database relasional. Dengan mengikuti langkah-langkah di atas dan mengamati bukti screenshot hasil kueri, kamu bisa mempraktikkannya dengan percaya diri!
Penulis :
Abryan Yoga Pratama
Mau Kuasai SQL JOIN: Cara Mudah Gabungkan 2 Tabel atau Lebih Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
