0Pricing
SQL Interview Prep · Ders

RIGHT ve FULL OUTER JOIN Anlamı

Her birinin ne zaman gerektiğini ve RIGHT ifadesinin LEFT olarak nasıl yeniden yazılacağını öğrenin.

RIGHT ve FULL OUTER JOIN Anlamı, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

LEFT JOIN'in Ötesi

LEFT JOIN işlemini anladıktan sonra mülakat yapanlar, bunun ayna görüntüsünü ve ikisinin birleşimini sınar: RIGHT JOIN ve FULL OUTER JOIN.

  • RIGHT JOIN sağ tablodaki her satırı korur.
  • FULL OUTER JOIN her iki tablodaki eşleşmeyen satırları korur.

Bu derste her biri kesin biçimde tanımlanır ve mülakat yapanların çok sevdiği yeniden yazma tekniği gösterilir: herhangi bir RIGHT JOIN, LEFT JOIN işlemine dönüştürülebilir.

RIGHT JOIN Tanımı

RIGHT JOIN (veya RIGHT OUTER JOIN), JOIN anahtar sözcüğünden sonra yazılan sağ tablodaki her satırı korur. Eşleşmeyen sağ satırlar, sol tablonun sütunlarında NULL değerleriyle görünür.

Bu, LEFT JOIN işleminin tam ayna görüntüsüdür. LEFT ilk adı geçen tabloyu korurken RIGHT ikinci adı geçen tabloyu korur.

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)

Tabloları Yeniden İnceleyelim

Veriler öncekiyle aynıdır. Carol'ın (müşteri 3) siparişi yoktur. Buradaki tüm sipariş satırları mevcut bir müşteriye başvurduğu için, müşteriler korunan taraf olduğunda hiçbir sipariş sahipsiz kalmaz.

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

RIGHT JOIN İşlemini LEFT Olarak Yeniden Yazma

Mülakatın kilit noktası şudur: RIGHT JOIN pratikte nadiren kullanılır; çünkü tablo sırasını her zaman değiştirip LEFT JOIN kullanabilirsiniz. Aşağıdaki iki sorgu mantıksal olarak aynıdır.

Birçok biçim kılavuzu RIGHT JOIN kullanımını tamamen yasaklar; çünkü soldan sağa okumak ve her zaman sol tabloyu korumak, sorgunun mantığını kavramayı kolaylaştırır.

-- 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;

FULL OUTER JOIN Tanımı

FULL OUTER JOIN, her iki tablodaki eşleşmeyen satırları korur. Bunu LEFT JOIN ile RIGHT JOIN işlemlerinin birleşimi olarak düşünebilirsiniz:

  • Eşleşen çiftler normal şekilde görünür.
  • Eşleşmeyen sol satırlar: sağ sütunlar NULL olur.
  • Eşleşmeyen sağ satırlar: sol sütunlar NULL olur.

Bu işlem, "Her iki taraftaki her şeyi gösterin ve eşleşenleri hizalayın" sorusunu yanıtlar.

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

FULL OUTER JOIN Ne Zaman Parlar

FULL OUTER JOIN, eşleşmesi gereken ancak eşleşmeyebilecek iki veri kümesini karşılaştıran mutabakat işlemleri için başvurulan yöntemdir.

orders tablosu ile ayrı bir payments tablosu olduğunu düşünün. Sipariş kimliği üzerinden yapılan bir FULL OUTER JOIN, tek bir sonuçta hem ödemesi olmayan siparişleri hem de eşleşen siparişi olmayan ödemeleri ortaya çıkarır; her biri, eksik taraftaki NULL değerleriyle işaretlenir.

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

Lehçe Farkındalığı

Görüşmeci taşınabilirliği sorgulayabilir. MySQL'de FULL OUTER JOIN anahtar sözcüğü yoktur (8. sürüme kadar). Postgres, SQL Server ve Oracle bunu destekler.

MySQL'de bunu, bir LEFT JOIN ile bir RIGHT JOIN'i UNION ile birleştirerek (yinelenen eşleşmiş satırları kaldırır) taklit edersiniz. Bu ayrımı bilmeniz, gerçek dünya deneyiminiz olduğunu gösterir.

-- 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;

Dört JOIN Türüne Genel Bakış

Bu tabloyu zihninizde tutun. "Korunan", eşleşmeyen satırların NULL değerleriyle birlikte kalması anlamına gelir.

  • INNER JOIN: yalnızca eşleşen satırlar. Hiçbir şey korunmaz.
  • LEFT JOIN: tüm sol satırlar korunur.
  • RIGHT JOIN: tüm sağ satırlar korunur.
  • FULL OUTER JOIN: her iki taraf da korunur.

Dış birleştirmeyle ilgili her görüşme sorusu, hangi tarafın veya tarafların korunacağını seçmeye indirgenir.

Aralarında Seçim Yapma

Birleştirmeyi, "hangi eşleşmeyen satırları tutmam gerekiyor?" diye sorarak seçin.

  • Yalnızca ana tablonun satırlarını tutmanız gerekiyorsa: LEFT JOIN (ana tabloyu ilk sıraya koyun).
  • Mutabakat için eşleşmeyen her iki küme de gerekiyorsa: FULL OUTER JOIN.
  • Yalnızca eşleşmeler önemliyse: INNER JOIN.

RIGHT JOIN'i neredeyse hiçbir zaman doğrudan seçmezsiniz; onu LEFT olarak yeniden ifade edersiniz.

Bir Mutabakat Örneği

Her satırın durumunu etiketlemek için FULL OUTER JOIN'i kullanın. NULL örüntüsü üzerindeki CASE, hangi tarafın eksik olduğunu söyler; bu, klasik denetim sorgusudur.

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;

Yaygın Bir Yanlış Anlama

Adaylar genellikle FULL OUTER JOIN'in eşleşmeyen satırların Kartezyen çarpımını döndürdüğünü düşünür. Bu doğru değildir. Her iki taraftaki eşleşmeyen satırlar, NULL değerleriyle eşleştirilmiş olarak tam bir kez görünür; birbirleriyle hiçbir zaman çarpılmaz.

Eşleşen satırlar yine normal birleştirme çoğalmasını izler (her eşleşen çift için bir çıktı satırı); bu, her birleştirmede geçerli olan aynı yayılma kuralıdır.

Hızlı Kontrol

Görüşmeci, RIGHT JOIN kullanımını yasaklayan bir ekip için bir sorguyu yeniden yazmanızı ister.

Özet

RIGHT JOIN sağ tabloyu; FULL OUTER JOIN her iki tabloyu korur. Her RIGHT JOIN, tablo sırası değiştirilerek bir LEFT JOIN olarak yeniden yazılabilir; ekiplerin LEFT'i tercih etmesinin nedeni budur.

  • FULL OUTER, iki veri kümesini mutabıklaştırmak için idealdir.
  • MySQL'de FULL OUTER yoktur; bunu LEFT + RIGHT + UNION ile taklit edebilirsiniz.
  • Birleştirmeyi, hangi eşleşmeyen satırların tutulacağına karar vererek seçin.
  • Eşleşmeyen satırlar NULL değerleriyle bir kez görünür; hiçbir zaman Kartezyen çarpım oluşturmaz.

Sıkça Sorulan Sorular

“RIGHT ve FULL OUTER JOIN Anlamı” dersi ücretsiz mi?

Evet — “RIGHT ve FULL OUTER JOIN Anlamı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“RIGHT ve FULL OUTER JOIN Anlamı” dersinde ne öğreneceğim?

Her birinin ne zaman gerektiğini ve RIGHT ifadesinin LEFT olarak nasıl yeniden yazılacağını öğrenin. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“RIGHT ve FULL OUTER JOIN Anlamı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. LEFT JOIN ve Eşleşmeyen Satırları Koruma
  2. RIGHT ve FULL OUTER JOIN Anlamı
  3. Eşleşmesi Olmayan Satırları Bulma (Anti-Join)
  4. Dış Birleştirmede WHERE Kullanma Tuzağı
← SQL Interview Prep Sayfasına Dön