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 Coding 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, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding 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 | 20RIGHT 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 missingLehç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 +
UNIONile 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 Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding 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. Coding 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.
Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Coding 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 Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Coding 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
- LEFT JOIN ve Eşleşmeyen Satırları Koruma
- RIGHT ve FULL OUTER JOIN Anlamı
- Eşleşmesi Olmayan Satırları Bulma (Anti-Join)
- Dış Birleştirmede WHERE Kullanma Tuzağı