0Pricing
SQL Interview Prep · Pelajaran

Cara INNER JOIN Mencocokkan Baris

Model mental pemasangan baris yang membuat setiap pertanyaan tentang JOIN menjadi mudah.

Cara INNER JOIN Mencocokkan Baris adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 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.

Penggabungan Pertama yang Ditanyakan Pewawancara

Ketika pewawancara mengatakan "gabungkan kedua tabel ini", hampir selalu yang dimaksud adalah INNER JOIN. Ini adalah penggabungan bawaan dan penggabungan yang menunjukkan apakah Anda benar-benar memahami cara baris dipasangkan.

Seluruh topik ini dapat diringkas dalam satu kalimat: INNER JOIN mempertimbangkan setiap pasangan baris yang mungkin dari kedua tabel dan hanya mempertahankan pasangan yang memenuhi kondisi ON. Jika tidak ada kecocokan, baris tersebut menghilang begitu saja dari hasil.

Pahami model mental ini dan setiap pertanyaan penggabungan yang lebih sulit akan menjadi lebih mudah.

Dua Tabel untuk Dianalisis

Sepanjang pelajaran ini kita menggunakan dua tabel kecil. Tabel pelanggan menyimpan siapa yang membuat pesanan, sedangkan tabel pesanan mencatat setiap pesanan beserta pelanggan yang memilikinya.

  • customers(id, name)
  • orders(id, customer_id, amount)

Penghubung di antara keduanya adalah orders.customer_id = customers.id. Kesetaraan itu merupakan predikat penggabungan yang menjadi dasar seluruh hasil.

customers
id | name
1  | Ada
2  | Bob
3  | Cleo   -- no orders yet

orders
id | customer_id | amount
10 | 1           | 50
11 | 1           | 20
12 | 2           | 99

Kueri INNER JOIN Dasar

Inilah kueri kanonis yang ingin dilihat pewawancara. Perhatikan tiga bagiannya: kedua tabel, JOIN ... ON yang memasangkan baris, dan kolom yang Anda proyeksikan.

Kata kunci INNER bersifat opsional pada setiap basis data utama. Menulis JOIN saja berarti INNER JOIN, tetapi menuliskannya secara lengkap menunjukkan maksud dan menghindari ambiguitas dalam peninjauan kode.

SELECT c.name, o.amount
FROM customers AS c
INNER JOIN orders AS o
  ON o.customer_id = c.id;

Seperti Apa Bentuk Hasilnya

Jalankan kueri tersebut pada data contoh dan Anda mendapatkan tiga baris. Ada memiliki dua pesanan, sehingga ia muncul dua kali. Bob muncul satu kali.

Cleo tidak muncul. Ia tidak memiliki pesanan yang cocok, sehingga INNER JOIN menghapusnya sepenuhnya. Menyatakan dengan jelas bahwa baris yang tidak cocok akan menghilang adalah hal terpenting dalam wawancara tentang penggabungan.

name | amount
Ada  | 50
Ada  | 20
Bob  | 99

Model Mental Pemasangan Baris

Bayangkan basis data membentuk hasil kali Kartesius terlebih dahulu: setiap pelanggan dipasangkan dengan setiap pesanan. Dengan 3 pelanggan dan 3 pesanan, terdapat 9 pasangan kandidat.

Kemudian basis data menerapkan predikat ON dan hanya mempertahankan pasangan yang menghasilkan nilai benar. Dari 9 kandidat tersebut, hanya 3 yang memenuhi o.customer_id = c.id.

Anda tidak menggunakan cara berpikir ini untuk mengoptimalkan kinerja, tetapi inilah model tepat yang menjawab setiap pertanyaan "berapa banyak baris yang dikembalikan?"

Menelusuri Pasangan Kandidat

Mari kita telusuri. Komentar setelah setiap pasangan menunjukkan apakah predikatnya benar.

Hanya tiga baris TRUE yang bertahan dalam hasil. Setiap pasangan yang melibatkan Cleo (id 3) gagal, sehingga ia tidak menyumbangkan apa pun.

-- customer.id vs order.customer_id
(Ada=1, ord10 cust=1)  -> TRUE  keep
(Ada=1, ord11 cust=1)  -> TRUE  keep
(Ada=1, ord12 cust=2)  -> FALSE
(Bob=2, ord10 cust=1)  -> FALSE
(Bob=2, ord12 cust=2)  -> TRUE  keep
(Cleo=3, anything)     -> FALSE (no order matches 3)

INNER JOIN Tidak Bergantung pada Urutan

Pertanyaan umum: apakah penting tabel mana yang Anda letakkan terlebih dahulu? Untuk INNER JOIN, tidak. Kedua kueri ini mengembalikan baris yang sama karena kondisi ON bersifat simetris.

Pengoptimal bebas membaca tabel mana pun terlebih dahulu, terlepas dari cara Anda menuliskannya. (Hal ini NOT berlaku untuk penggabungan LEFT/RIGHT, yang akan dibahas kemudian.)

-- These return the same rows
SELECT c.name, o.amount
FROM customers c JOIN orders o ON o.customer_id = c.id;

SELECT c.name, o.amount
FROM orders o JOIN customers c ON c.id = o.customer_id;

Alias Tabel Diharapkan

Pewawancara menginginkan alias yang singkat dan jelas. Bandingkan versi panjang dengan kualifikasi lengkap dengan versi bersih yang menggunakan alias.

Alias juga menjadi wajib ketika nama kolom terdapat di kedua tabel. Memilih id tanpa kualifikasi di sini akan menimbulkan kesalahan kolom ambigu, jadi Anda harus menulis c.id atau o.id.

-- verbose
SELECT customers.name, orders.amount
FROM customers JOIN orders
  ON orders.customer_id = customers.id;

-- aliased, preferred
SELECT c.name, o.amount
FROM customers c JOIN orders o
  ON o.customer_id = c.id;

Menggabungkan Berdasarkan Lebih dari Satu Kolom

Predikat ON tidak terbatas pada satu persamaan. Ketika sebuah relasi ditentukan oleh kunci komposit, Anda menggabungkan kondisi-kondisinya dengan AND.

Di sini, harga berlaku untuk setiap produk di setiap wilayah, jadi pencocokan memerlukan kedua kolom agar sesuai. Pewawancara menggunakan hal ini untuk memeriksa bahwa Anda tidak sekadar menghafal penggabungan berdasarkan satu kolom.

SELECT s.units, p.unit_price
FROM sales s
INNER JOIN price_list p
  ON p.product_id = s.product_id
 AND p.region     = s.region;

JOIN Non-Ekuivalen Juga Ada

Kondisi ON dapat berupa ekspresi logika apa pun, bukan hanya =. JOIN non-ekuivalen menggunakan rentang atau ketidaksamaan. Contoh klasiknya adalah mengelompokkan skor ke dalam rentang nilai.

Setiap skor cocok dengan satu rentang yang memuatnya. Menyebutkan bahwa JOIN tidak terbatas pada persamaan adalah cara cepat untuk menunjukkan bahwa Anda berpengalaman.

SELECT s.student, g.grade
FROM scores s
INNER JOIN grades g
  ON s.points >= g.min_points
 AND s.points <= g.max_points;

JOIN Eksplisit dibandingkan JOIN dengan Koma

Anda masih akan menemukan sintaks JOIN dengan koma yang lama dalam kode lama dan beberapa pertanyaan wawancara. Kedua kueri ini setara untuk INNER JOIN.

Utamakan bentuk eksplisit JOIN ... ON. Sintaks dengan koma mudah salah ditulis sehingga menghasilkan produk Kartesius yang tidak disengaja (karena lupa menuliskan WHERE), dan inilah kesalahan yang ingin ditemukan oleh pewawancara.

-- old implicit join
SELECT c.name, o.amount
FROM customers c, orders o
WHERE o.customer_id = c.id;

-- modern explicit join (preferred)
SELECT c.name, o.amount
FROM customers c
JOIN orders o ON o.customer_id = c.id;

Pemeriksaan Singkat

Uji gagasan inti tentang pencocokan INNER JOIN.

Ringkasan: Cara INNER JOIN Mencocokkan Baris

Poin penting yang perlu Anda sampaikan kembali saat wawancara:

  • INNER JOIN hanya mempertahankan pasangan yang cocok; baris yang tidak cocok di salah satu sisi akan hilang.
  • Model mentalnya: bentuk semua pasangan kandidat, lalu pertahankan pasangan yang predikat ON-nya bernilai benar.
  • Hasilnya tidak bergantung pada urutan, dan kata kunci INNER bersifat opsional.
  • ON dapat menggunakan kunci komposit, rentang, dan ketidaksamaan, bukan hanya satu =.
  • Gunakan JOIN ... ON yang eksplisit dengan alias yang jelas untuk menghindari kesalahan kolom ambigu dan produk Kartesius yang tidak disengaja.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Cara INNER JOIN Mencocokkan Baris” gratis?

Ya — teks lengkap “Cara INNER JOIN Mencocokkan Baris” 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 “Cara INNER JOIN Mencocokkan Baris”?

Model mental pemasangan baris yang membuat setiap pertanyaan tentang JOIN menjadi mudah. 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 1 dari 4.

Berapa lama pelajaran “Cara INNER JOIN Mencocokkan Baris” 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

  1. Cara INNER JOIN Mencocokkan Baris
  2. ON vs WHERE dalam JOIN
  3. Fan-Out JOIN dan Penggandaan Baris
  4. Menggabungkan Tiga Tabel atau Lebih
← Kembali ke SQL Interview Prep