Kursus
Meskipun join SQL umumnya digunakan untuk menggabungkan data dari dua tabel, Anda tidak perlu berhenti di situ. Anda sebenarnya dapat menggabungkan data dari tiga atau bahkan lebih banyak tabel untuk menggali relasi dan wawasan yang lebih kompleks dari data Anda.
Dalam artikel ini, saya akan memandu Anda melalui contoh menggabungkan tiga tabel di SQL; kita juga akan membahas implementasi spesifik basis data dan praktik terbaik. Saya juga sangat merekomendasikan untuk mengikuti kursus Introduction to SQL dan Learn SQL untuk seluruh pengetahuan dasar yang penting.
Ringkasan
-
Gunakan
INNER JOINsaat Anda hanya menginginkan record yang cocok di semua tabel,LEFT JOINsaat Anda menginginkan semua data dari tabel utama meski tanpa kecocokan, danRIGHT JOINjika tabel paling kanan menjadi prioritas. -
SQL memproses join dari kiri ke kanan, jadi urutan itu penting. Bangun query selangkah demi selangkah dan periksa hasilnya seiring berjalan.
-
Untuk kinerja yang lebih baik, buat indeks pada kolom join, lakukan penyaringan sedini mungkin dengan
WHERE, gabungkan tabel yang lebih kecil terlebih dahulu, dan pilih hanya kolom yang Anda perlukan.
Langkah-Langkah Menggabungkan 3 Tabel di SQL
Menggabungkan tiga tabel di SQL memungkinkan Anda menjalankan query kompleks untuk mengambil data lintas banyak tabel. Saat menggabungkan tiga tabel, kita menggunakan klausa JOIN untuk mengombinasikan data dari tabel-tabel tersebut.
Misalkan Anda memiliki tiga tabel berikut: Customers, Products, dan Orders.

Contoh tabel Customers di SQL. Gambar oleh Penulis.

Contoh tabel Products di SQL. Gambar oleh Penulis.

Contoh tabel Orders di SQL. Gambar oleh Penulis.
Pertama, Anda dapat menggabungkan tabel Customers dan Orders untuk menampilkan pelanggan yang melakukan pemesanan dan detail pesanan mereka, seperti order_id, order_date, dan quantity yang dipesan.
-- Select data from Customers
SELECT
Customers.customer_id,
Customers.first_name,
Customers.last_name,
Orders.order_id,
Orders.order_date,
Orders.quantity
FROM Customers
-- Join Orders table
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id;

Contoh SQL JOIN tabel Customers dan Orders. Gambar oleh Penulis.
Terakhir, Anda dapat menggabungkan ketiga tabel, Customers, Orders, dan Products, untuk mendapatkan tampilan menyeluruh tentang pelanggan, pesanan mereka, produk yang mereka beli, dan total biaya setiap pesanan.
-- Select data starting with Customers
SELECT
Customers.customer_id,
Customers.first_name,
Customers.last_name,
Orders.order_id,
Orders.order_date,
Products.product_name,
Orders.quantity,
Products.price,
(Orders.quantity * Products.price) AS total_cost -- Total cost calculation
FROM Customers
-- Join the Orders table based on customer_id
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id
-- Join the Products table based on product_id
INNER JOIN Products
ON Orders.product_id = Products.product_id;

Contoh SQL JOIN tiga tabel. Gambar oleh Penulis.
Mari kita lihat contoh praktis penggunaan INNER JOIN, LEFT JOIN, dan RIGHT JOIN untuk menggabungkan tiga tabel. Lihat tutorial Introduction to SQL Joins kami untuk mempelajari lebih lanjut tentang berbagai jenis dan contoh join.
Contoh Cara Menggabungkan 3 Tabel di SQL
Sekarang mari kita lihat beberapa contoh praktis dengan menggunakan INNER JOIN, LEFT JOIN, dan RIGHT JOIN untuk menggabungkan tiga tabel.
Jika Anda kesulitan memahami salah satu join ini dan ingin latihan lebih lanjut agar benar-benar menguasai teknik yang tepat, daftarlah di kursus Joining Data in SQL, yang tidak hanya membantu Anda dengan join SQL tetapi juga mengajarkan teori himpunan relasional dan subquery.
Menggunakan INNER JOIN
INNER JOIN mengambil record dengan nilai yang cocok di ketiga tabel, menyaring record yang tidak cocok. Menggunakan INNER JOIN ideal saat Anda hanya memerlukan hasil yang memiliki relasi langsung di semua tabel yang terlibat.
Misalkan Anda memiliki tiga tabel: Customers, Orders, dan Products. Query di bawah ini hanya mengambil pelanggan yang telah melakukan pemesanan dan menyertakan detail produk yang terkait dengan setiap pesanan.
-- Select customer details, order information, and associated product names
SELECT
Customers.customer_id,
Customers.customer_name,
Orders.order_id,
Products.product_name
-- Select from Customers table
FROM Customers
-- Join Orders table
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id
-- Join Products table
INNER JOIN Products
ON Orders.product_id = Products.product_id;
Menggunakan LEFT JOIN
LEFT JOIN mengembalikan semua record dari tabel pertama (kiri) dan record yang cocok dari dua tabel lainnya. Jika tidak ada kecocokan, nilai NULL dikembalikan untuk kolom dari tabel kanan. LEFT JOIN berguna saat mengambil semua record dari tabel utama, meskipun beberapa baris tidak memiliki data terkait di tabel lainnya.
Pada contoh berikut, semua pelanggan akan muncul dalam hasil, meskipun mereka belum melakukan pemesanan. Kolom data akan bernilai NULL jika tidak ada data pesanan atau produk yang cocok.
-- Select customer details, order information, and product names
SELECT
Customers.customer_id,
Customers.customer_name,
Orders.order_id,
Products.product_name
FROM Customers
-- Join Orders table
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer_id
-- Join Products table
LEFT JOIN Products
ON Orders.product_id = Products.product_id;
Sebagai catatan, LEFT JOIN sama dengan LEFT OUTER JOIN di SQL. Kami memiliki tutorial yang membahas detailnya: SQL LEFT JOIN vs. LEFT OUTER JOIN.
Menggunakan RIGHT JOIN
RIGHT JOIN mengambil semua record dari tabel ketiga (paling kanan) dan record yang cocok dari tabel kiri. Meskipun RIGHT JOIN lebih jarang digunakan, ini tetap berguna saat memprioritaskan record di tabel paling kanan.
Sebagai contoh, dalam analisis inventaris, Anda mungkin ingin mengetahui produk mana yang memiliki pesanan atau interaksi pelanggan. Semua produk akan tercantum pada query di bawah ini, termasuk data pesanan atau pelanggan yang terkait. Jika ada produk yang belum dipesan, kolom order_id dan customer_name akan berisi NULL.
-- Select customer details, order information, and product names
SELECT
Customers.customer_id,
Customers.customer_name,
Orders.order_id,
Products.product_name
-- Select from Customers table
FROM Customers
-- Join Orders table
RIGHT JOIN Orders
ON Customers.customer_id = Orders.customer_id
-- Join Products table
RIGHT JOIN Products
ON Orders.product_id = Products.product_id;
Walaupun contoh di atas menunjukkan penggunaan satu jenis join (INNER JOIN, LEFT JOIN, atau RIGHT JOIN), sangat mungkin—dan sering kali diperlukan—untuk menggabungkan berbagai jenis join dalam satu query guna menangani relasi data yang lebih kompleks. Misalnya, Anda dapat menggunakan LEFT JOIN untuk menyertakan semua record dari satu tabel sekaligus menggunakan INNER JOIN untuk relasi lain dalam query yang sama.
Perlu juga disebutkan bahwa SQL memproses join secara berurutan dari kiri ke kanan, sehingga urutan menentukan bagaimana tabel digabungkan dan bagaimana nilai NULL ditangani. Inilah alasan saya memulai artikel ini dengan menunjukkan proses dua langkah. Membangun query secara bertahap dan memverifikasi hasil secara berkala adalah pendekatan yang tepat. LEFT JOIN diikuti INNER JOIN sering kali berbeda dari INNER JOIN diikuti LEFT JOIN.
Mengapa Kita Harus Menggabungkan 3 Tabel di SQL
Mari sejenak membahas desain basis data. Alasan kini umum melakukan join lintas lebih dari dua tabel adalah karena normalisasi basis data kini lazim. Basis data (dan sebenarnya orang yang merancangnya) melakukan ini dengan mengorganisasi informasi ke dalam tabel-tabel yang berbeda namun saling terkait. Ini dirancang untuk menghilangkan redundansi (dan juga alasan lainnya). Dekomposisi basis data ini berarti data yang relevan dengan entitas berbeda—seperti tabel Customers, Orders, dan Products yang kita lihat di atas—disimpan secara terpisah.
Dengan kata lain, karena data sering disimpan dalam skema basis data yang ternormalisasi, pengambilan informasi sering kali memerlukan penggabungan data dari banyak tabel. Karena itu, kita perlu tahu cara menulis query yang melakukan banyak join karena, sederhananya, demikianlah struktur data yang kemungkinan besar Anda hadapi. Kursus Database Design kami adalah sumber yang baik untuk gagasan-gagasan ini.
Fitur Join Spesifik Basis Data
Walaupun join SQL konsisten di sebagian besar basis data relasional, terdapat beberapa perbedaan dalam menangani banyak join yang melibatkan tiga tabel atau lebih. Mari kita lihat implementasi dan pertimbangan spesifik basis data untuk menghindari masalah dan isu optimasi.
MySQL
MySQL umumnya berkinerja baik dengan join dasar tetapi dapat kesulitan dengan query kompleks yang melibatkan banyak tabel. Perintah EXPLAIN di MySQL berguna untuk memahami kinerja join dan mengidentifikasi cara mengoptimalkan query dengan pengindeksan atau penulisan ulang query. MySQL juga mendukung keyword STRAIGHT_JOIN, yang memaksa urutan join, berpotensi meningkatkan kinerja query dalam kasus ketika optimasi join bawaan tidak ideal.
PostgreSQL
Optimizer yang kuat pada PostgreSQL membuatnya sangat efisien untuk join kompleks, bahkan dengan dataset besar. Dukungan untuk query rekursif menggunakan klausa WITH RECURSIVE memungkinkan penggabungan data hierarkis lintas banyak tabel. Window functions PostgreSQL bersifat canggih dan dapat melengkapi join dengan memungkinkan analisis baris demi baris dalam dataset hasil join.
SQL Server
SQL Server memungkinkan petunjuk join tertentu (MERGE JOIN, LOOP JOIN, dan HASH JOIN) untuk menimpa perilaku default, sehingga meningkatkan kinerja join multitable. Operator CROSS APPLY dan OUTER APPLY di SQL Server adalah alat yang kuat untuk menggabungkan tabel dengan table-valued function, memberikan fleksibilitas lebih dalam query multitable.
Saya merekomendasikan mengikuti kursus Introduction to SQL Server dari DataCamp untuk memahami berbagai fungsionalitas SQL Server dalam melakukan query data. Cobalah juga jalur keterampilan SQL Server Fundamentals untuk meningkatkan kemampuan join tabel dan analisis data Anda. Jalur karier SQL Server Developer akan membekali Anda dengan keterampilan menulis, menelusuri, dan mengoptimalkan query menggunakan SQL Server.
Oracle SQL
Oracle mendukung semua join standar dan menyediakan opsi unik seperti NATURAL JOIN, yang secara otomatis menggabungkan tabel berdasarkan kesamaan nama kolom. Dukungan Oracle untuk query hierarkis dengan CONNECT BY terkadang dapat mengurangi kebutuhan join tambahan dengan menangani data bertingkat secara lebih efisien.
Praktik Terbaik Saat Menggabungkan 3 Tabel di SQL
Menggabungkan tiga tabel di SQL dapat meningkatkan kompleksitas query dan memengaruhi kinerja, terutama seiring pertumbuhan ukuran data. Berikut adalah praktik terbaik dan teknik optimasi untuk meningkatkan kinerja query.
-
Gunakan Pengindeksan yang Tepat: Indeks pada kolom yang sering digunakan dalam kondisi join mempercepat pengambilan data dengan mengurangi jumlah data yang dipindai.
-
Saring Lebih Awal Menggunakan WHERE dan Kondisi JOIN: Tempatkan kondisi penyaringan langsung pada klausa
JOINatauWHEREuntuk mengurangi data yang perlu diproses pada join selanjutnya, sehingga meningkatkan kinerja. -
Pertimbangkan Urutan dan Jenis Join: Saat menggabungkan banyak tabel, gabungkan tabel yang lebih kecil terlebih dahulu untuk meminimalkan dataset secepat mungkin. Hindari menggunakan
LEFTatauRIGHTjoin jika analisis Anda tidak memerlukan record yang tidak cocok. -
Minimalkan Kolom yang Dipilih dengan SELECT: Hindari menggunakan
SELECT *yang menyertakan kolom yang tidak diperlukan. Secara eksplisit pilih kolom yang dibutuhkan untuk mengurangi data yang dikembalikan setiap tabel, meminimalkan penggunaan memori dan meningkatkan kinerja query. -
Gunakan Subquery atau Tabel Sementara untuk Join Kompleks: Pertimbangkan untuk memecah query menjadi bagian-bagian yang lebih kecil menggunakan subquery untuk join yang sangat kompleks. Untuk join yang melibatkan query kompleks berulang, pertimbangkan menyimpan hasil antara dalam tabel sementara guna menghemat waktu pemrosesan, terutama untuk query dengan perhitungan ekstensif.
Kesimpulan dan Pembelajaran Lanjutan
Menggabungkan tiga tabel di SQL memungkinkan Anda mengombinasikan data lintas banyak tabel untuk analisis data dan pengelolaan basis data yang menyeluruh. Menguasai teknik yang tepat akan memastikan kode Anda efisien, skalabel, dan berkinerja tinggi.
Jika Anda ingin menjadi analis data yang andal, lihat jalur karier Associate Data Analyst in SQL kami untuk mempelajari keterampilan yang diperlukan. Kursus Reporting in SQL juga tepat jika Anda ingin mempelajari cara membangun dashboard profesional menggunakan SQL. Terakhir, saya merekomendasikan memperoleh SQL Associate Certification untuk menunjukkan penguasaan Anda menggunakan SQL untuk analisis data dan membuat resume Anda lebih menonjol.
FAQ
Jenis join apa yang dapat digunakan untuk menggabungkan tiga tabel?
Anda dapat menggunakan INNER JOIN, LEFT JOIN, RIGHT JOIN, dan sesekali FULL JOIN untuk menggabungkan tiga tabel.
Apakah urutan join penting saat menggabungkan tiga tabel?
Urutan join dapat memengaruhi kinerja, terutama pada tabel yang lebih besar. Memulai dengan tabel yang lebih kecil atau yang sangat difilter sering kali meningkatkan efisiensi.
Bagaimana saya mengoptimalkan kinerja saat menggabungkan tiga tabel di SQL?
Untuk mengoptimalkan kinerja, pastikan pengindeksan yang tepat pada kolom yang digunakan dalam join, batasi jumlah baris yang dikembalikan dengan klausa WHERE, dan pilih hanya kolom yang diperlukan.
Bisakah saya menggabungkan lebih dari tiga tabel?
Anda dapat menggabungkan lebih dari tiga tabel di SQL, tetapi query mungkin menjadi lebih kompleks dan memerlukan optimasi kinerja.

