Menggabungkan Tiga Tabel atau Lebih
Rangkai JOIN dan buat penalaran tentang kumpulan hasil perantara.
Menggabungkan Tiga Tabel atau Lebih adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.
JOIN Membentuk Rantai, Bukan Cabang
Masalah wawancara nyata jarang berhenti pada dua tabel. Anda akan diminta menggabungkan tiga, empat, atau lebih tabel. Wawasan utama yang membantu meredakan kerumitan ini adalah: JOIN beberapa tabel hanyalah rangkaian JOIN dua tabel.
Basis data menggabungkan dua tabel pertama menjadi hasil antara, lalu menggabungkan hasil tersebut dengan tabel ketiga, dan seterusnya. Jika Anda dapat menalar satu JOIN, Anda dapat menalar rangkaian JOIN tersebut.
Skema Tiga Tabel
Kita memperluas contoh dengan tabel ketiga. Sekarang kita memiliki pelanggan, pesanan mereka, dan produk yang dirujuk oleh setiap pesanan.
customers(id, name)orders(id, customer_id, product_id, amount)products(id, title)
Dua hubungan menghubungkan semuanya: orders.customer_id = customers.id dan orders.product_id = products.id.
customers(id, name)
orders(id, customer_id, product_id, amount)
products(id, title)Kueri Dasar Tiga Tabel
Susun penggabungan secara berurutan. Setiap JOIN ... ON menambahkan tabel dan menjelaskan cara tabel tersebut terhubung dengan bagian sebelumnya.
Bacalah dari atas ke bawah: mulai dari orders, tambahkan pelanggan yang cocok, lalu tambahkan produk yang cocok. Setiap baris pesanan memperoleh nama dan judul produk.
SELECT c.name, p.title, o.amount
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id;Berpikir dalam Set Hasil Perantara
Model mental yang membuat penggabungan banyak tabel menjadi mudah: setelah setiap JOIN, bayangkan hasil perantara yang telah terbentuk.
- Setelah penggabungan 1: orders + kolom pelanggan.
- Setelah penggabungan 2: hasil tersebut + kolom produk.
Klausa ON berikutnya dapat merujuk ke kolom mana pun yang sudah ada dalam set perantara, sehingga urutan penggabungan memengaruhi hal yang dapat Anda tulis dalam setiap ON.
Setiap ON Melihat Tabel Sebelumnya
Konsekuensi pentingnya: klausa ON pada penggabungan berikutnya dapat merujuk ke tabel mana pun yang digabungkan sebelumnya, bukan hanya tabel yang sedang ditambahkan.
Di sini, penggabungan ketiga terhubung ke o (orders), yang sudah berada dalam cakupan. Anda juga dapat menghubungkan tabel keempat ke c atau p karena keduanya sudah menjadi bagian dari hasil yang sedang dibentuk.
SELECT c.name, p.title, w.region
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id
JOIN warehouses w ON w.id = o.warehouse_id; -- refers to oMulai dari Tabel Pusat
Tips praktis untuk wawancara langsung: awali FROM dengan tabel fakta / pusat (biasanya tabel yang berada di tengah hubungan), lalu bergerak ke luar menuju tabel referensi.
Pesanan berada di tengah, dengan kunci asing ke pelanggan dan produk, sehingga memulainya dari sana membuat setiap klausa ON tetap sederhana dan selalu merujuk ke tabel yang telah disebutkan.
-- orders is central: it links to both sides
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_idPenggandaan Baris Terakumulasi Sepanjang Rantai
Semua yang telah Anda pelajari tentang penggandaan baris masih berlaku, dan efeknya menumpuk. Jika setiap pesanan memiliki banyak barang dan setiap barang memiliki banyak baris pajak, jumlah baris akan berlipat ganda pada setiap langkah.
Jika suatu agregat tampak terlalu besar dalam kueri dengan banyak penggabungan, curigai adanya penggandaan baris yang diperkenalkan oleh salah satu penggabungan di tengah, lalu periksa tingkat perincian setiap penggabungan secara terpisah.
-- rows = orders * items_per_order * tax_rows_per_item
SELECT o.id
FROM orders o
JOIN order_items i ON i.order_id = o.id
JOIN item_taxes t ON t.item_id = i.id;Mencampur Jenis Penggabungan dalam Rantai
Anda dapat menggabungkan INNER dan LEFT dalam satu kueri, tetapi urutan sangat penting. Setelah LEFT JOIN menghasilkan NULL, INNER JOIN berikutnya yang merujuk ke kolom-kolom NULL tersebut dapat menghapus baris yang sebelumnya dipertahankan.
Di sini, jika seorang pelanggan tidak memiliki pesanan, LEFT JOIN mempertahankannya dengan product_id NULL, lalu INNER JOIN berikutnya ke products menghapusnya lagi. Ini adalah kesalahan yang mudah terjadi saat berada di bawah tekanan.
SELECT c.name, p.title
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
JOIN products p ON p.id = o.product_id;
-- the INNER products join can cancel the LEFT JOINMenjaga Penggabungan Luar Tetap Luar
Untuk mempertahankan pelanggan tanpa pesanan sampai akhir, buat penggabungan berikutnya juga LEFT. Dengan demikian, NULL mengalir dengan aman hingga akhir.
Aturan praktis: setelah menggunakan penggabungan luar, tetap gunakan penggabungan luar untuk setiap tabel yang bergantung pada cabang opsional tersebut.
SELECT c.name, p.title
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
LEFT JOIN products p ON p.id = o.product_id;
-- customers with no orders are now kept (NULL title)Alias Menjadi Penting dalam Skala Besar
Dengan empat atau lima tabel, beberapa tabel mungkin memiliki nama kolom yang sama seperti id, name, atau created_at. Alias yang singkat dan konsisten mencegah ambiguitas serta menjaga kueri tetap mudah dibaca.
Pilih alias yang memberi petunjuk tentang tabelnya (c, o, p) dan berikan kualifikasi pada setiap kolom. Pewawancara melihat penggunaan alias Anda sebagai tanda cara Anda menulis SQL untuk produksi.
SELECT c.id AS customer_id,
o.id AS order_id,
p.id AS product_id,
p.title
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p ON p.id = o.product_id;Tabel Penghubung untuk Relasi Banyak-ke-Banyak
Ketika dua entitas memiliki hubungan banyak-ke-banyak, tabel ketiga berupa tabel penghubung (jembatan) berada di antara keduanya, dan penggabungan dilakukan melalui tabel tersebut. Mahasiswa dan mata kuliah terhubung melalui pendaftaran.
Menyadari bahwa Anda harus melewati tabel penghubung merupakan tanda yang umum diperhatikan dalam wawancara.
SELECT s.name, c.title
FROM students s
JOIN enrollments e ON e.student_id = s.id
JOIN courses c ON c.id = e.course_id;Pemeriksaan Singkat
Analisislah rantai penggabungan campuran.
Ringkasan: Menggabungkan Tiga Tabel atau Lebih
Ingat hal-hal berikut saat wawancara:
- Penggabungan banyak tabel adalah rantai penggabungan dua tabel; analisis hasil perantara setelah setiap langkah.
- Klausa ON berikutnya dapat merujuk ke tabel mana pun yang lebih awal dalam rantai.
- Mulailah dari tabel pusat, lalu bergerak ke luar menuju tabel referensi.
- Penggandaan baris terakumulasi di seluruh penggabungan; periksa tingkat perincian pada setiap langkah.
- INNER JOIN setelah LEFT JOIN dapat membatalkan efeknya; tetap gunakan penggabungan luar untuk mempertahankan baris opsional.
- Hubungan banyak-ke-banyak digabungkan melalui tabel penghubung.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menggabungkan Tiga Tabel atau Lebih” gratis?
Ya — teks lengkap “Menggabungkan Tiga Tabel atau Lebih” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menggabungkan Tiga Tabel atau Lebih”?
Rangkai JOIN dan buat penalaran tentang kumpulan hasil perantara. Kamu berlatih SQL Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Interview Prep?
Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Menggabungkan Tiga Tabel atau Lebih” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Interview Prep ini?
Ya. Setiap pelajaran SQL Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Cara INNER JOIN Mencocokkan Baris
- ON vs WHERE dalam JOIN
- Fan-Out JOIN dan Penggandaan Baris
- Menggabungkan Tiga Tabel atau Lebih