0Pricing
SQL Academy · Pelajaran

LEFT/RIGHT JOIN dan JOIN OUTER

Gunakan LEFT JOIN untuk mempertahankan baris yang tidak memiliki pasangan, pahami RIGHT dan FULL OUTER JOIN, serta deteksi data yang hilang dengan WHERE x IS NULL.

LEFT/RIGHT JOIN dan JOIN OUTER adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

LEFT JOIN: Pertahankan Semua Baris Kiri

LEFT JOIN mengembalikan setiap baris dari tabel kiri, beserta kolom sisi kanan yang cocok atau NULL jika tidak ada kecocokan.

SELECT u.id, u.email, o.id AS order_id
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;

-- Users without orders still appear, with order_id = NULL.

RIGHT JOIN

RIGHT JOIN adalah kebalikan dari LEFT JOIN—pertahankan semua baris RIGHT. Kebanyakan orang menulis ulang RIGHT JOIN sebagai LEFT JOIN agar lebih mudah dibaca:

SELECT u.id, u.email, o.id
FROM orders o
RIGHT JOIN users u ON u.id = o.user_id;

-- Equivalent to LEFT JOIN with sides swapped:
SELECT u.id, u.email, o.id
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;

FULL OUTER JOIN

Pertahankan baris dari kedua sisi. Kolom yang tidak memiliki pasangan akan bernilai NULL:

SELECT u.email, o.id AS order_id
FROM users u
FULL OUTER JOIN orders o ON o.user_id = u.id;

Menemukan Kecocokan yang Hilang

LEFT JOIN dengan WHERE right.id IS NULL menemukan baris di tabel kiri yang tidak memiliki kecocokan di sisi kanan—pola klasik "anti-penggabungan":

SELECT u.id, u.email
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;        -- users who have never placed an order

LEFT JOIN dengan Agregasi

Berguna untuk laporan yang menampilkan "0 jika tidak ada":

SELECT u.id, u.email, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email
ORDER BY order_count DESC;

Posisi Penyaring Itu Penting

Penyaring pada tabel kanan dalam WHERE mengubah LEFT JOIN kembali menjadi INNER JOIN. Tempatkan penyaring tersebut dalam ON untuk mempertahankan perilaku LEFT:

-- Drops users without paid orders entirely:
SELECT u.id, COUNT(o.id)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.status = 'paid'
GROUP BY u.id;

-- Keeps users with no paid orders:
SELECT u.id, COUNT(o.id)
FROM users u
LEFT JOIN orders o
  ON o.user_id = u.id AND o.status = 'paid'
GROUP BY u.id;

Beberapa LEFT JOIN

Rangkai semuanya. Setiap LEFT mempertahankan baris dari sisi kiri operator tersebut:

SELECT u.email, o.id, p.name
FROM users u
LEFT JOIN orders o   ON o.user_id = u.id
LEFT JOIN products p ON p.id = o.product_id;

Performa LEFT JOIN

LEFT JOIN memiliki sedikit beban tambahan dibandingkan INNER karena perencana harus mempertahankan baris yang tidak cocok. Biasanya perbedaannya dapat diabaikan—tetapi jika Anda tidak memerlukan baris yang tidak cocok, INNER JOIN sedikit lebih murah.

Penggabungan Luar dan Keluaran NULL

Keluaran NULL dari LEFT JOIN dapat mengejutkan kode berikutnya. Gunakan COALESCE untuk memberikan nilai bawaan:

SELECT u.email, COALESCE(SUM(o.total), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.email;

CROSS JOIN — Saat Anda Menginginkan Semua Pasangan

Gabungkan setiap baris A dengan setiap baris B. Gunakan dengan hemat:

SELECT d.date, u.id
FROM users u
CROSS JOIN generate_series('2024-01-01', '2024-01-07', INTERVAL '1 day') AS d(date);

Pola Anti-Penggabungan

Tiga cara idiomatis untuk menemukan "baris kiri tanpa pasangan":

-- LEFT JOIN ... WHERE IS NULL
SELECT u.* FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;

-- NOT EXISTS (often the planner's favourite)
SELECT u.* FROM users u
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);

Ringkasan

Penggabungan OUTER mempertahankan baris yang tidak memiliki pasangan.

  • LEFT = semua baris kiri, NULL di kanan jika tidak memiliki pasangan
  • RIGHT = kebalikannya; gunakan LEFT agar lebih mudah dibaca
  • FULL OUTER = kedua sisi
  • Anti-penggabungan = LEFT JOIN ... WHERE sisi kanan bernilai NULL

Pemeriksaan Singkat

Jenis JOIN apa yang mengembalikan pengguna meskipun mereka memiliki NO pesanan?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “LEFT/RIGHT JOIN dan JOIN OUTER” gratis?

Ya — teks lengkap “LEFT/RIGHT JOIN dan JOIN OUTER” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “LEFT/RIGHT JOIN dan JOIN OUTER”?

Gunakan LEFT JOIN untuk mempertahankan baris yang tidak memiliki pasangan, pahami RIGHT dan FULL OUTER JOIN, serta deteksi data yang hilang dengan WHERE x IS NULL. Kamu berlatih SQL Academy 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 Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 3 dari 4.

Berapa lama pelajaran “LEFT/RIGHT JOIN dan JOIN OUTER” 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 Academy ini?

Ya. Setiap pelajaran SQL Academy 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. Mengapa JOIN (Pengulangan Model Relasional)
  2. Mekanisme INNER JOIN
  3. LEFT/RIGHT JOIN dan JOIN OUTER
  4. Self-Join dan Alias
← Kembali ke SQL Academy