0Pricing
Coding Interview Prep · Pelajaran

Semantik RIGHT dan FULL OUTER JOIN

Pelajari kapan masing-masing diperlukan dan cara menulis ulang RIGHT menjadi LEFT.

Semantik RIGHT dan FULL OUTER JOIN adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 2 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.

Di Luar LEFT JOIN

Setelah memahami LEFT JOIN, pewawancara menguji kebalikan dan gabungan keduanya: RIGHT JOIN dan FULL OUTER JOIN.

  • RIGHT JOIN mempertahankan setiap baris dari tabel kanan.
  • FULL OUTER JOIN mempertahankan baris yang tidak cocok dari kedua tabel.

Pelajaran ini mendefinisikan masing-masing dengan tepat dan menunjukkan trik penulisan ulang yang disukai pewawancara: RIGHT JOIN apa pun dapat diubah menjadi LEFT JOIN.

Definisi RIGHT JOIN

RIGHT JOIN (atau RIGHT OUTER JOIN) mempertahankan setiap baris dari tabel kanan, yaitu tabel yang ditulis setelah kata kunci JOIN. Baris kanan yang tidak cocok muncul dengan NULL pada kolom tabel kiri.

Ini adalah kebalikan tepat dari LEFT JOIN. Jika LEFT mempertahankan tabel yang disebut pertama, RIGHT mempertahankan tabel yang disebut kedua.

SELECT c.name, o.amount
FROM orders o
RIGHT JOIN customers c
  ON o.customer_id = c.id;
-- keeps ALL customers, even those
-- with no order (Carol -> amount NULL)

Tabel-Tabel Lagi

Data yang sama seperti sebelumnya. Carol (pelanggan 3) tidak memiliki pesanan. Semua baris pesanan di sini merujuk ke pelanggan yang ada, sehingga ketika pelanggan menjadi sisi yang dipertahankan, tidak ada pesanan yang tidak memiliki pelanggan.

-- customers           orders
-- 1 | Alice           10 | 1 | 50
-- 2 | Bob             11 | 1 | 75
-- 3 | Carol           12 | 2 | 20

Menulis Ulang RIGHT sebagai LEFT

Inti jawabannya dalam wawancara: RIGHT JOIN jarang digunakan dalam praktik karena Anda selalu dapat menukar urutan tabel dan menggunakan LEFT JOIN. Kedua kueri di bawah ini secara logis identik.

Banyak panduan gaya melarang RIGHT JOIN sepenuhnya karena membaca dari kiri ke kanan dan selalu mempertahankan tabel kiri lebih mudah dianalisis.

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

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

Definisi FULL OUTER JOIN

FULL OUTER JOIN mempertahankan baris yang tidak cocok dari kedua tabel. Anggaplah ini sebagai gabungan LEFT JOIN dan RIGHT JOIN:

  • Pasangan yang cocok muncul seperti biasa.
  • Baris kiri tanpa kecocokan: kolom kanan bernilai NULL.
  • Baris kanan tanpa kecocokan: kolom kiri bernilai NULL.

Ini menjawab permintaan "tampilkan semuanya dari kedua sisi dan sejajarkan yang cocok."

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

Saat FULL OUTER Paling Berguna

FULL OUTER JOIN merupakan pilihan utama untuk rekonsiliasi: membandingkan dua set data yang seharusnya cocok, tetapi mungkin tidak.

Bayangkan tabel orders dan tabel payments yang terpisah. FULL OUTER JOIN berdasarkan id pesanan menampilkan pesanan tanpa pembayaran dan pembayaran tanpa pesanan yang cocok dalam satu hasil, masing-masing ditandai oleh NULL pada sisi yang tidak ada.

SELECT o.id AS order_id, p.id AS payment_id
FROM orders o
FULL OUTER JOIN payments p
  ON p.order_id = o.id
WHERE o.id IS NULL OR p.id IS NULL;
-- rows where one side is missing

Kesadaran Dialek

Pewawancara mungkin menguji portabilitas. MySQL tidak memiliki kata kunci FULL OUTER JOIN (hingga versi 8). Postgres, SQL Server, dan Oracle mendukungnya.

Di MySQL, Anda dapat menirunya dengan menggabungkan LEFT JOIN dan RIGHT JOIN menggunakan UNION (yang menghapus baris cocok yang terduplikasi). Mengetahui perbedaan ini menunjukkan pengalaman dunia nyata.

-- FULL OUTER JOIN emulated in MySQL
SELECT c.name, o.id FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
UNION
SELECT c.name, o.id FROM customers c
RIGHT JOIN orders o ON o.customer_id = c.id;

Sekilas Empat Jenis JOIN

Simpan tabel ini dalam ingatan Anda. "Dipertahankan" berarti baris yang tidak cocok tetap ada dengan NULL.

  • INNER JOIN: hanya baris yang cocok. Tidak ada yang dipertahankan.
  • LEFT JOIN: semua baris kiri dipertahankan.
  • RIGHT JOIN: semua baris kanan dipertahankan.
  • FULL OUTER JOIN: kedua sisi dipertahankan.

Setiap pertanyaan wawancara tentang penggabungan luar pada akhirnya hanya menentukan sisi mana yang harus dipertahankan.

Memilih di Antaranya

Pilih penggabungan dengan bertanya, "Baris yang tidak cocok mana yang harus saya pertahankan?"

  • Hanya pertahankan baris tabel utama: LEFT JOIN (letakkan tabel utama terlebih dahulu).
  • Memerlukan kedua kumpulan baris yang tidak cocok untuk rekonsiliasi: FULL OUTER JOIN.
  • Hanya kecocokan yang penting: INNER JOIN.

Anda hampir tidak pernah memilih RIGHT JOIN secara langsung; Anda dapat menyusunnya ulang sebagai LEFT JOIN.

Contoh Rekonsiliasi

Gunakan FULL OUTER JOIN untuk memberi label status setiap baris. CASE berdasarkan pola NULL memberi tahu Anda sisi mana yang tidak ada—ini adalah kueri audit klasik.

SELECT
  COALESCE(o.id, p.order_id) AS ord,
  CASE
    WHEN p.id IS NULL THEN 'no payment'
    WHEN o.id IS NULL THEN 'orphan payment'
    ELSE 'matched'
  END AS status
FROM orders o
FULL OUTER JOIN payments p ON p.order_id = o.id;

Kesalahpahaman Umum

Kandidat sering mengira FULL OUTER JOIN mengembalikan produk Kartesius dari baris-baris yang tidak cocok. Itu tidak benar. Baris yang tidak cocok di masing-masing sisi muncul tepat sekali, dipasangkan dengan NULL, dan tidak pernah dikalikan satu sama lain.

Baris yang cocok tetap mengikuti penggandaan penggabungan normal (satu baris keluaran untuk setiap pasangan yang cocok), aturan perluasan yang sama seperti penggabungan apa pun.

Pemeriksaan Singkat

Pewawancara meminta Anda menulis ulang kueri untuk tim yang melarang RIGHT JOIN.

Rangkuman

RIGHT JOIN mempertahankan tabel kanan; FULL OUTER JOIN mempertahankan kedua tabel. RIGHT JOIN apa pun dapat ditulis ulang sebagai LEFT JOIN dengan menukar urutan tabel, sehingga tim lebih memilih LEFT.

  • FULL OUTER ideal untuk merekonsiliasi dua kumpulan data.
  • MySQL tidak memiliki FULL OUTER; tiru dengan LEFT + RIGHT + UNION.
  • Pilih penggabungan dengan menentukan baris yang tidak cocok mana yang ingin dipertahankan.
  • Baris yang tidak cocok muncul sekali dengan NULL, tidak pernah sebagai produk Kartesius.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Semantik RIGHT dan FULL OUTER JOIN” gratis?

Ya — teks lengkap “Semantik RIGHT dan FULL OUTER JOIN” 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 “Semantik RIGHT dan FULL OUTER JOIN”?

Pelajari kapan masing-masing diperlukan dan cara menulis ulang RIGHT menjadi LEFT. 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 2 dari 4.

Berapa lama pelajaran “Semantik RIGHT dan FULL OUTER JOIN” 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. LEFT JOIN dan Mempertahankan Baris Tanpa Pasangan
  2. Semantik RIGHT dan FULL OUTER JOIN
  3. Menemukan Baris Tanpa Kecocokan (Anti-JOIN)
  4. Jebakan WHERE pada OUTER JOIN
← Kembali ke Coding Interview Prep