0Pricing
Coding Interview Prep · Pelajaran

Memilih Jenis JOIN yang Tepat

Kerangka pengambilan keputusan untuk memilih JOIN yang benar berdasarkan soal berbentuk uraian.

Memilih Jenis JOIN yang Tepat adalah pelajaran Coding 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 Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Memilih JOIN dari Soal Berbentuk Narasi

Keterampilan JOIN yang paling penting dalam wawancara bukanlah sintaks, melainkan menerjemahkan persyaratan dalam bahasa biasa menjadi jenis JOIN yang tepat. Sebagian besar kandidat mengetahui cara kerja setiap JOIN, tetapi bingung ketika harus memilih salah satunya di bawah tekanan.

Pelajaran ini memberi Anda kerangka keputusan yang dapat digunakan berulang kali, sehingga Anda dapat menyebutkan JOIN yang tepat dalam hitungan detik.

Pertanyaan Inti: Baris Mana yang Harus Dipertahankan?

Setiap pilihan JOIN bermuara pada satu pertanyaan: baris tanpa pasangan dari sisi mana yang perlu dipertahankan?

  • Hanya mempertahankan baris yang cocok di kedua sisi: INNER JOIN.
  • Mempertahankan semua baris kiri, baik memiliki pasangan maupun tidak: LEFT JOIN.
  • Mempertahankan semua baris dari kedua sisi: FULL OUTER JOIN.
  • Mempertahankan setiap kombinasi: CROSS JOIN.

Tentukan terlebih dahulu apa yang harus dipertahankan; jenis JOIN akan mengikuti secara otomatis.

Kata Kunci Petunjuk untuk INNER JOIN

Frasa seperti 'pelanggan yang melakukan pemesanan,' 'produk yang memiliki ulasan,' atau 'pesanan beserta pelanggannya' semuanya menyiratkan bahwa pasangan harus ada di kedua sisi. Itulah INNER JOIN.

Jika menghapus baris tanpa pasangan dapat diterima atau memang diinginkan, INNER JOIN adalah pilihan bawaan dan yang paling efisien.

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

Kata Kunci Petunjuk untuk LEFT JOIN

Frasa seperti 'semua pelanggan, termasuk yang tidak memiliki pesanan,' atau 'tampilkan setiap produk dan jumlah ulasannya (nol jika tidak ada)' berarti Anda harus mempertahankan tabel kiri terlepas dari ada atau tidaknya pasangan. Itulah LEFT JOIN.

Kata-kata petunjuknya adalah 'semua,' 'termasuk yang tidak memiliki,' dan 'bahkan jika tidak ada.'

SELECT c.name, COUNT(o.order_id) AS orders
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.name;

Kata Kunci Petunjuk untuk Penggabungan Anti

Frasa seperti 'pelanggan yang tidak pernah melakukan pemesanan,' 'produk tanpa penjualan,' atau 'karyawan tanpa manajer' meminta baris yang tidak memiliki pasangan. Ini adalah penggabungan anti: LEFT JOIN ditambah WHERE right_key IS NULL (atau NOT EXISTS).

Kata kuncinya adalah 'tidak pernah,' 'tidak ada,' atau 'tanpa.'

SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.order_id IS NULL;

Kata Kunci Petunjuk untuk FULL OUTER JOIN

Frasa seperti 'rekonsiliasikan dua daftar dan tampilkan entri yang hilang dari salah satu sisi' atau 'bandingkan akun bulan lalu dengan bulan ini, lalu tandai akun baru dan akun yang hilang' mengharuskan Anda mempertahankan baris tanpa pasangan dari kedua tabel. Itulah FULL OUTER JOIN.

Masalah rekonsiliasi dan pencarian perbedaan biasanya menjadi pemicunya.

SELECT a.id, b.id
FROM last_month a
FULL OUTER JOIN this_month b ON a.id = b.id
WHERE a.id IS NULL OR b.id IS NULL;

Kata Kunci Petunjuk untuk CROSS JOIN

Frasa seperti 'setiap ukuran dalam setiap warna,' 'satu baris untuk setiap toko setiap hari meskipun tidak ada penjualan,' atau 'semua kombinasi yang mungkin' mengarah ke CROSS JOIN.

Petunjuknya adalah 'setiap... dalam setiap' atau 'semua kombinasi,' ketika tidak ada kondisi pencocokan antara kedua himpunan.

SELECT s.size, c.color
FROM sizes s
CROSS JOIN colors c;

Kata Kunci Petunjuk untuk SELF JOIN

Frasa yang menghubungkan suatu baris dengan baris lain dalam tabel yang sama, seperti 'setiap karyawan dan manajernya,' 'pasangan pengguna di kota yang sama,' atau 'temukan email duplikat,' menunjukkan SELF JOIN.

Petunjuknya adalah bahwa suatu entitas merujuk atau dibandingkan dengan entitas lain yang sejenis.

SELECT e.name, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

Contoh Penerapan

Soal: 'Tampilkan setiap produk dan berapa kali produk tersebut dipesan bulan lalu, termasuk produk yang tidak pernah dipesan.'

Uraikan: 'setiap produk' ditambah 'termasuk yang tidak pernah dipesan' berarti pertahankan semua baris produk, jadi gunakan LEFT JOIN dari produk ke pesanan, lalu hitung sisi pesanan dengan COUNT (hasilnya 0 untuk produk tanpa pasangan karena COUNT mengabaikan NULL).

SELECT p.name, COUNT(o.order_id) AS times_ordered
FROM products p
LEFT JOIN orders o
  ON o.product_id = p.id
 AND o.order_date >= DATE '2024-05-01'
GROUP BY p.id, p.name;

Jebakan Umum: Filter dalam ON vs WHERE

Pada kueri sebelumnya, filter tanggal berada dalam klausa ON, bukan WHERE. Dengan begitu, produk yang tidak memiliki pesanan yang memenuhi syarat tetap dipertahankan.

Jika Anda memindahkan order_date >= ... ke dalam WHERE, baris NULL dari produk tanpa pasangan akan dibuang dan secara diam-diam mengubah LEFT JOIN menjadi INNER JOIN, sehingga produk yang justru diminta untuk dipertahankan oleh soal ikut hilang.

-- WRONG: WHERE on the outer table removes unmatched products
-- ...
-- LEFT JOIN orders o ON o.product_id = p.id
-- WHERE o.order_date >= '2024-05-01'  <-- becomes an inner join

Kerangka Keputusan

Gunakan daftar periksa ini untuk setiap soal JOIN berbentuk narasi:

  • Tabel yang sama berhubungan dengan dirinya sendiri? -> SELF JOIN (dan pertimbangkan CTE rekursif jika kedalamannya tidak terbatas).
  • Setiap kombinasi tanpa kondisi? -> CROSS JOIN.
  • Hanya baris yang cocok? -> INNER JOIN.
  • Pertahankan semua baris dari salah satu sisi? -> LEFT JOIN.
  • Pertahankan baris tanpa pasangan dari kedua sisi? -> FULL OUTER JOIN.
  • Baris tanpa pasangan? -> penggabungan anti (LEFT JOIN + IS NULL).

Pemeriksaan Singkat

Terapkan kerangka tersebut pada sebuah soal berbentuk narasi.

Ringkasan: Memilih Jenis JOIN yang Tepat

Hal-hal penting:

  • Mulailah setiap keputusan JOIN dengan menanyakan baris tanpa pasangan mana yang harus dipertahankan.
  • Petakan kata kunci petunjuk: 'semua/termasuk' -> LEFT, 'tidak pernah/tidak ada' -> penggabungan anti, 'setiap...dalam setiap' -> CROSS, 'setiap X dan X-nya' -> SELF, rekonsiliasi -> FULL OUTER.
  • Pertahankan filter JOIN luar dalam klausa ON; filter dalam WHERE dapat secara diam-diam menurunkan LEFT JOIN menjadi INNER JOIN.
  • Uraikan kerangka ini secara lisan dalam wawancara; hal itu menunjukkan penalaran, bukan hafalan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Memilih Jenis JOIN yang Tepat” gratis?

Ya — teks lengkap “Memilih Jenis JOIN yang Tepat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Memilih Jenis JOIN yang Tepat”?

Kerangka pengambilan keputusan untuk memilih JOIN yang benar berdasarkan soal berbentuk uraian. Kamu berlatih Coding 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 Coding Interview Prep?

Tidak diperlukan pengalaman sebelumnya. Coding 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 “Memilih Jenis JOIN yang Tepat” 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 Coding Interview Prep ini?

Ya. Setiap pelajaran Coding 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. CROSS JOIN dan Produk Kartesius
  2. SELF JOIN untuk Hierarki
  3. Membandingkan Baris dalam Satu Tabel
  4. Memilih Jenis JOIN yang Tepat
← Kembali ke Coding Interview Prep