0Pricing
SQL Academy · Ders

LEFT/RIGHT JOIN ve OUTER Birleştirmeleri

Eşleşmeyen satırları korumak için LEFT JOIN kullanın, RIGHT ve FULL OUTER birleştirmelerini anlayın ve WHERE x IS NULL ile eksik verileri belirleyin.

LEFT/RIGHT JOIN ve OUTER Birleştirmeleri, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. 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 Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

LEFT JOIN: Soldaki Tüm Satırları Koruyun

LEFT JOIN, sol tablodaki her satırı; eşleşen sağ taraf sütunlarıyla veya eşleşme olmadığında NULL ile döndürür.

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

LEFT JOIN'in karşılığıdır — sağdaki tüm satırları korur. Çoğu kişi okunabilirlik için RIGHT JOIN'leri yalnızca LEFT JOIN olarak yeniden yazar:

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

Her iki taraftaki satırları korur. Eşleşmeyen sütunlar NULL olur:

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

Eksik Eşleşmeleri Bulma

WHERE right.id IS NULL koşuluna sahip bir LEFT JOIN, sol tabloda bulunup sağ tarafta eşleşmesi olmayan satırları bulur — klasik "eşleşmesiz birleştirme":

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

Toplulaştırmayla LEFT JOIN

"Eksikse 0" raporları için kullanışlıdır:

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;

Süzgecin Konumu Önemlidir

WHERE içindeki sağ tablo süzgeçleri bir LEFT JOIN'i yeniden INNER JOIN'e dönüştürür. LEFT davranışını korumak için bunları ON içine koyun:

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

Birden Fazla LEFT JOIN

Zincirleyin. Her LEFT, kendi işleç ifadesinin solundaki satırları korur:

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;

LEFT JOIN Performansı

LEFT JOIN'in INNER JOIN'e göre küçük bir ek maliyeti vardır (planlayıcı eşleşmeyen satırları korumalıdır). Çoğu zaman önemsizdir — ancak eşleşmeyen satırlara ihtiyacınız yoksa INNER JOIN biraz daha ucuzdur.

Dış JOIN ve NULL Çıktısı

Bir LEFT JOIN'den gelen NULL çıktısı, sonraki kodu şaşırtabilir. Varsayılan değerler sağlamak için COALESCE kullanın:

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;

Tüm Çiftleri İstediğinizde CROSS JOIN

A'nın her satırını B'nin her satırıyla JOIN yapar. Ölçülü kullanın:

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

Eşleşmesiz Birleştirme Kalıpları

"Eşleşmesi olmayan sol tarafı" bulmanın üç yaygın yolu:

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

Özet

OUTER JOIN'ler eşleşmeyen satırları korur.

  • LEFT = soldakilerin tümü, eşleşme yoksa sağ taraf NULL
  • RIGHT = karşılığı; okunabilirlik için LEFT kullanın
  • FULL OUTER = her iki taraf
  • Eşleşmesiz birleştirme = LEFT JOIN ... WHERE right IS NULL

Hızlı Kontrol

Hangi JOIN türü, hiç siparişi olmasa bile kullanıcıları döndürür?

Sıkça Sorulan Sorular

“LEFT/RIGHT JOIN ve OUTER Birleştirmeleri” dersi ücretsiz mi?

Evet — “LEFT/RIGHT JOIN ve OUTER Birleştirmeleri” 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 Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“LEFT/RIGHT JOIN ve OUTER Birleştirmeleri” dersinde ne öğreneceğim?

Eşleşmeyen satırları korumak için LEFT JOIN kullanın, RIGHT ve FULL OUTER birleştirmelerini anlayın ve WHERE x IS NULL ile eksik verileri belirleyin. SQL Academy 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 Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, 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 3. dersidir.

“LEFT/RIGHT JOIN ve OUTER Birleştirmeleri” 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 Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy 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. JOIN Neden Kullanılır (İlişkisel Modelin Özeti)
  2. INNER JOIN Mekanizması
  3. LEFT/RIGHT JOIN ve OUTER Birleştirmeleri
  4. Kendi Kendine Birleştirmeler ve Takma Adlar
← SQL Academy Sayfasına Dön