Dalam pengolahan data, informasi yang dibutuhkan sering kali tidak berada dalam satu tabel. Misalnya, sebuah toko memiliki tabel pelanggan yang berisi identitas pelanggan dan tabel transaksi yang berisi riwayat pembelian. Jika ingin mengetahui nama pelanggan beserta transaksi yang dilakukan, kedua tabel tersebut perlu digabungkan.
SQL JOIN digunakan untuk menggabungkan data dari dua tabel atau lebih berdasarkan kolom yang memiliki hubungan. Dengan JOIN, kita dapat mengambil informasi yang tersebar di beberapa tabel tanpa harus menggabungkan datanya secara manual.
Pada artikel ini, kita akan membuat dua tabel sederhana menggunakan SQLite, kemudian menggunakan SQL JOIN untuk menggabungkan data pelanggan dengan data transaksi.
📘 Apa yang Akan Dipelajari?
Pada artikel ini kamu akan mempelajari:
- Pengertian SQL JOIN.
- Mengapa data sering disimpan dalam beberapa tabel.
- Cara membuat tabel sederhana menggunakan SQLite.
- Cara menggunakan
INNER JOIN. - Cara menentukan kolom yang digunakan sebagai penghubung.
- Cara melihat hasil penggabungan data.
- Perbedaan sederhana antara
INNER JOINdanLEFT JOIN. - Kesalahan yang sering dilakukan ketika menggunakan JOIN.
- Penerapan JOIN dalam pekerjaan Data Analyst.
💡 Mengapa SQL JOIN Diperlukan?
Sebuah database biasanya tidak menyimpan seluruh informasi dalam satu tabel. Data dipisahkan ke dalam beberapa tabel agar lebih terstruktur dan mengurangi pengulangan data.
Sebagai contoh, sebuah toko dapat memiliki tabel pelanggan:
id_pelanggan | nama
-------------|---------
1 | Andi
2 | Budi
3 | CitraKemudian terdapat tabel transaksi:
id_transaksi | id_pelanggan | produk | jumlah
-------------|--------------|--------------|-------
101 | 1 | Keyboard | 2
102 | 2 | Mouse | 1
103 | 1 | Headset | 1Perhatikan bahwa tabel transaksi tidak menyimpan nama pelanggan. Tabel tersebut hanya menyimpan id_pelanggan.
Jika kita ingin mengetahui siapa yang melakukan setiap transaksi, kita perlu menghubungkan kedua tabel tersebut.
Di sinilah SQL JOIN digunakan.
⚠️ Sebelum Memulai
Untuk mengikuti praktik ini, kamu membutuhkan:
- Google Colab atau lingkungan Python lainnya.
- Pemahaman dasar Python.
- Pemahaman dasar SQL.
- Pengetahuan sederhana mengenai tabel dan kolom.
Pada praktik kali ini kita menggunakan SQLite. SQLite adalah database ringan yang dapat dijalankan langsung tanpa membutuhkan server database terpisah.
Python juga memiliki library bawaan bernama sqlite3 yang dapat digunakan untuk menjalankan database SQLite.
🗃️ Membuat Database dan Tabel
Pertama, kita perlu membuat koneksi ke database SQLite.
Gunakan kode berikut:
import sqlite3
conn = sqlite3.connect("toko.db")
cursor = conn.cursor()
print("Database berhasil dibuat!")Jika kode berhasil dijalankan, output yang muncul:
Database berhasil dibuat!Kode sqlite3.connect() digunakan untuk membuat atau membuka database SQLite.

Selanjutnya, kita membuat tabel pelanggan dan transaksi.
cursor.execute("""
CREATE TABLE IF NOT EXISTS pelanggan (
id_pelanggan INTEGER PRIMARY KEY,
nama TEXT,
kota TEXT
)
""")
cursor.execute("""
CREATE TABLE IF NOT EXISTS transaksi (
id_transaksi INTEGER PRIMARY KEY,
id_pelanggan INTEGER,
produk TEXT,
jumlah INTEGER
)
""")
conn.commit()
print("Tabel berhasil dibuat!")Pada contoh tersebut terdapat dua tabel:
pelanggan digunakan untuk menyimpan informasi pelanggan.
transaksi digunakan untuk menyimpan informasi transaksi.
Kolom id_pelanggan menjadi penghubung antara kedua tabel tersebut.

📝 Memasukkan Data
Setelah tabel dibuat, kita masukkan data contoh.
pelanggan = [
(1, "Andi", "Solo"),
(2, "Budi", "Yogyakarta"),
(3, "Citra", "Semarang")
]
transaksi = [
(101, 1, "Keyboard", 2),
(102, 2, "Mouse", 1),
(103, 1, "Headset", 1),
(104, 3, "Webcam", 2)
]
cursor.executemany(
"INSERT INTO pelanggan VALUES (?, ?, ?)",
pelanggan
)
cursor.executemany(
"INSERT INTO transaksi VALUES (?, ?, ?, ?)",
transaksi
)
conn.commit()
print("Data berhasil dimasukkan!")Tanda ? digunakan sebagai placeholder untuk nilai yang akan dimasukkan ke dalam query.
Penggunaan placeholder seperti ini merupakan kebiasaan yang baik ketika bekerja dengan query SQL melalui Python karena membantu memisahkan struktur query dari nilai yang diberikan.

🔍 Melihat Data Sebelum JOIN
Sebelum menggabungkan tabel, kita dapat melihat isi masing-masing tabel.
Untuk melihat tabel pelanggan:
cursor.execute("SELECT * FROM pelanggan")
for row in cursor.fetchall():
print(row)Output:
(1, 'Andi', 'Solo')
(2, 'Budi', 'Yogyakarta')
(3, 'Citra', 'Semarang')Kemudian lihat tabel transaksi:
cursor.execute("SELECT * FROM transaksi")
for row in cursor.fetchall():
print(row)Output:
(101, 1, 'Keyboard', 2)
(102, 2, 'Mouse', 1)
(103, 1, 'Headset', 1)
(104, 3, 'Webcam', 2)Dari hasil tersebut terlihat bahwa informasi pelanggan dan transaksi masih berada pada tabel yang berbeda.
🔗 Apa Itu INNER JOIN?
INNER JOIN digunakan untuk mengambil data yang memiliki pasangan pada kedua tabel.
Bentuk dasar syntax-nya:
SELECT kolom
FROM tabel_pertama
INNER JOIN tabel_kedua
ON tabel_pertama.kolom = tabel_kedua.kolom;Bagian ON digunakan untuk menentukan kondisi hubungan antara kedua tabel.
Dalam kasus kita, kolom penghubungnya adalah id_pelanggan.
Kita dapat menjalankan query berikut:
query = """
SELECT
pelanggan.nama,
pelanggan.kota,
transaksi.produk,
transaksi.jumlah
FROM pelanggan
INNER JOIN transaksi
ON pelanggan.id_pelanggan = transaksi.id_pelanggan
"""
cursor.execute(query)
for row in cursor.fetchall():
print(row)Hasilnya:
('Andi', 'Solo', 'Keyboard', 2)
('Budi', 'Yogyakarta', 'Mouse', 1)
('Andi', 'Solo', 'Headset', 1)
('Citra', 'Semarang', 'Webcam', 2)
Sekarang informasi dari kedua tabel sudah dapat ditampilkan dalam satu hasil query.
Contohnya, data transaksi dengan id_pelanggan = 1 dapat dihubungkan dengan data pelanggan yang memiliki ID yang sama. Hasilnya menunjukkan bahwa transaksi tersebut dilakukan oleh Andi.
📊 Membuat Hasil JOIN Lebih Mudah Dibaca
Jika jumlah data semakin banyak, hasil query akan lebih mudah dianalisis jika ditampilkan dalam bentuk DataFrame.
Kita dapat menggunakan Pandas:
Mau Kuasai SQL JOIN: Cara Menggabungkan Data dari Dua Tabel dengan Contoh Praktik 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 →
import pandas as pd
query = """
SELECT
pelanggan.nama,
pelanggan.kota,
transaksi.produk,
transaksi.jumlah
FROM pelanggan
INNER JOIN transaksi
ON pelanggan.id_pelanggan = transaksi.id_pelanggan
"""
df = pd.read_sql_query(query, conn)
print(df)Output:
nama kota produk jumlah
0 Andi Solo Keyboard 2
1 Budi Yogyakarta Mouse 1
2 Andi Solo Headset 1
3 Citra Semarang Webcam 2Dengan cara ini, hasil query SQL dapat langsung digunakan kembali untuk proses analisis menggunakan Pandas.

🆚 INNER JOIN dan LEFT JOIN
Selain INNER JOIN, terdapat jenis JOIN lain yang sering digunakan, salah satunya LEFT JOIN.
Perbedaannya secara sederhana:
| Jenis JOIN | Hasil |
|---|---|
| INNER JOIN | Hanya menampilkan data yang memiliki pasangan pada kedua tabel |
| LEFT JOIN | Menampilkan seluruh data dari tabel sebelah kiri dan pasangan yang tersedia dari tabel kanan |
Sebagai contoh, kita dapat menggunakan LEFT JOIN:
query = """
SELECT
pelanggan.nama,
transaksi.produk,
transaksi.jumlah
FROM pelanggan
LEFT JOIN transaksi
ON pelanggan.id_pelanggan = transaksi.id_pelanggan
"""
df = pd.read_sql_query(query, conn)
print(df)LEFT JOIN berguna ketika kita ingin memastikan seluruh data dari tabel utama tetap muncul meskipun belum memiliki data pasangan.
Misalnya terdapat pelanggan yang belum pernah melakukan transaksi. Dengan INNER JOIN, pelanggan tersebut tidak akan muncul dalam hasil. Dengan LEFT JOIN, pelanggan tetap dapat ditampilkan.
Pemilihan jenis JOIN harus disesuaikan dengan pertanyaan yang ingin dijawab.
🧪 Mini Praktik
Sekarang coba ubah query sebelumnya untuk hanya menampilkan pelanggan yang membeli produk tertentu.
Misalnya kita ingin mencari transaksi untuk produk Keyboard.
query = """
SELECT
pelanggan.nama,
transaksi.produk,
transaksi.jumlah
FROM pelanggan
INNER JOIN transaksi
ON pelanggan.id_pelanggan = transaksi.id_pelanggan
WHERE transaksi.produk = 'Keyboard'
"""
cursor.execute(query)
for row in cursor.fetchall():
print(row)Output:
('Andi', 'Keyboard', 2)Dari query tersebut kita menggunakan dua konsep sekaligus, yaitu JOIN untuk menggabungkan tabel dan WHERE untuk melakukan filter.
Cobalah mengganti Keyboard menjadi Mouse, Headset, atau Webcam untuk melihat hasil lainnya.

💼 Penerapan SQL JOIN dalam Dunia Kerja
Dalam pekerjaan Data Analyst, penggunaan JOIN sangat umum karena data perusahaan biasanya terbagi ke dalam berbagai tabel.
Contohnya pada sistem penjualan dapat terdapat:
customers
products
orders
order_details
paymentsSeorang Data Analyst mungkin mendapatkan pertanyaan:
Siapa pelanggan dengan transaksi terbanyak?
Untuk menjawab pertanyaan tersebut, data pelanggan perlu dihubungkan dengan data transaksi.
Contoh lainnya:
Produk apa yang paling banyak dibeli oleh pelanggan dari kota tertentu?
Pertanyaan tersebut dapat membutuhkan data dari tabel pelanggan, transaksi, dan produk sekaligus.
Dengan JOIN, berbagai sumber data tersebut dapat dikombinasikan sebelum dilakukan analisis lebih lanjut.
❌ Kesalahan yang Sering Dilakukan Pemula
Beberapa kesalahan yang sering terjadi ketika menggunakan SQL JOIN antara lain:
- Menggunakan kolom penghubung yang salah.
- Tidak memahami hubungan antar tabel.
- Lupa menuliskan kondisi
ON. - Menggunakan
INNER JOINketika sebenarnya membutuhkanLEFT JOIN. - Menghasilkan data yang berlipat karena hubungan antar tabel tidak dipahami.
- Menggabungkan tabel tanpa mengetahui tujuan analisis.
- Tidak memeriksa hasil JOIN setelah query dijalankan.
Salah satu kebiasaan yang baik adalah memahami struktur tabel terlebih dahulu sebelum menulis query JOIN.
⭐ Tips dan Best Practice
Beberapa tips yang dapat diterapkan ketika menggunakan SQL JOIN:
- Kenali struktur tabel sebelum membuat query.
- Cari tahu kolom apa yang menjadi penghubung antar tabel.
- Gunakan nama tabel atau alias agar query lebih mudah dibaca.
- Jangan langsung menggunakan
SELECT *untuk query analisis yang kompleks. - Periksa jumlah baris sebelum dan sesudah JOIN.
- Pastikan jenis JOIN sesuai dengan kebutuhan analisis.
- Uji query menggunakan dataset kecil sebelum menggunakannya pada dataset besar.
Untuk query yang lebih kompleks, penggunaan alias juga dapat membuat syntax menjadi lebih ringkas.
Contohnya:
SELECT
p.nama,
t.produk,
t.jumlah
FROM pelanggan AS p
INNER JOIN transaksi AS t
ON p.id_pelanggan = t.id_pelanggan;p merupakan alias untuk tabel pelanggan, sedangkan t merupakan alias untuk tabel transaksi.
🔗 Hubungannya dengan Pembelajaran Sebelumnya
Pada pembelajaran sebelumnya, kita telah menggunakan Python dan Pandas untuk melakukan analisis terhadap data. Salah satu tahap sebelumnya adalah mempelajari korelasi antar kolom menggunakan Pandas.
SQL JOIN menjadi penting karena dalam kondisi nyata, data yang akan dianalisis tidak selalu berada dalam satu DataFrame atau satu file.
Alur sederhananya dapat digambarkan sebagai berikut:
Data dari Database
↓
Beberapa Tabel
↓
SQL JOIN
↓
Data yang Digabungkan
↓
Pandas / Python
↓
Analisis dan InsightDengan memahami JOIN, kita mulai belajar bagaimana mengambil data dari struktur database yang lebih realistis sebelum masuk ke tahap analisis.
🎯 Kesimpulan
SQL JOIN merupakan salah satu konsep penting dalam pengolahan data menggunakan SQL. JOIN memungkinkan kita menggabungkan informasi dari beberapa tabel berdasarkan kolom yang memiliki hubungan.
Dalam praktik ini, kita membuat database SQLite sederhana yang terdiri dari tabel pelanggan dan transaksi. Kedua tabel tersebut kemudian digabungkan menggunakan INNER JOIN berdasarkan kolom id_pelanggan.
Kita juga mempelajari penggunaan LEFT JOIN serta mencoba menggabungkan JOIN dengan WHERE untuk melakukan filter terhadap hasil query.
Hal yang paling penting bukan hanya menghafalkan syntax JOIN, tetapi memahami hubungan antar tabel dan menentukan jenis JOIN berdasarkan kebutuhan analisis.
Dengan memahami konsep ini, kita memiliki dasar yang lebih baik untuk mengolah database dan menjawab pertanyaan analisis yang melibatkan data dari beberapa tabel.
✍️ Penulis
Ditulis oleh Maulana Aldi Pradana.
Mau Kuasai SQL JOIN: Cara Menggabungkan Data dari Dua Tabel dengan Contoh Praktik 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 →
