0Pricing
SQL Interview Prep · Ders

Doğru Birleştirme Türünü Seçme

Bir sözel problemden doğru birleştirmeyi seçmek için karar çerçevesi kullanın.

Doğru Birleştirme Türünü Seçme, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 4. 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.

Bir Sözel Problemden Birleştirmeyi Seçmek

Mülakatta en değerli birleştirme becerisi sözdizimi değil, sade dille yazılmış bir gereksinimi doğru birleştirme türüne dönüştürmektir. Çoğu aday her birleştirmenin nasıl çalıştığını bilir; ancak baskı altında birini seçmeleri gerektiğinde donup kalırlar.

Bu ders, doğru birleştirmeyi saniyeler içinde adlandırabilmeniz için tekrarlanabilir bir karar çerçevesi sunar.

Temel Soru: Hangi Satırlar Korunmalı?

Her birleştirme seçimi tek bir soruya indirgenir: hangi tarafın eşleşmeyen satırlarını korumanız gerekiyor?

  • Yalnızca her iki tarafta da eşleşen satırları koruyun: INNER JOIN.
  • Eşleşsin veya eşleşmesin, tüm sol satırları koruyun: LEFT JOIN.
  • Her iki taraftaki tüm satırları koruyun: FULL OUTER JOIN.
  • Her kombinasyonu koruyun: CROSS JOIN.

Önce neyin korunması gerektiğine karar verin; birleştirme türü kendiliğinden ortaya çıkar.

INNER JOIN İçin İpucu Sözcükler

'Sipariş veren müşteriler,' 'yorumu bulunan ürünler,' veya 'müşterileriyle birlikte siparişler' gibi ifadelerin tümü, her iki tarafta da bir eşleşmenin bulunması gerektiğini belirtir. Bu, bir INNER JOIN işlemidir.

Eşleşmeyen satırları atmak kabul edilebilir veya isteniyorsa, INNER JOIN varsayılan ve en verimli seçimdir.

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

LEFT JOIN İçin İpucu Sözcükler

'Siparişi olmayanlar da dahil tüm müşteriler,' veya 'her ürünü ve yorum sayısını listeleyin (yoksa sıfır)' gibi ifadeler, eşleşme olup olmadığına bakılmaksızın sol tabloyu korumanız gerektiği anlamına gelir. Bu, bir LEFT JOIN işlemidir.

Belirleyici sözcükler 'tümü,' 'olmayanlar da dahil,' ve 'hiç olmasa bile' ifadeleridir.

SELECT c.name, COUNT(o.order_id) AS orders
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.name;

Karşıt Birleştirme İçin İpucu Sözcükler

'Hiç sipariş vermemiş müşteriler,' 'satışı olmayan ürünler,' veya 'yöneticisi olmayan çalışanlar' gibi ifadeler, hiçbir eşleşmesi olmayan satırları ister. Bu, karşıt birleştirmedir: LEFT JOIN ile birlikte WHERE right_key IS NULL (veya NOT EXISTS) kullanılır.

Anahtar sözcükler 'asla,' 'hiçbir' veya 'olmadan' ifadeleridir.

SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.order_id IS NULL;

FULL OUTER JOIN İçin İpucu Sözcükler

'İki listeyi mutabıklaştırın ve iki tarafta da eksik olan girdileri gösterin' veya 'Geçen ayın hesaplarını bu ayın hesaplarıyla karşılaştırıp hem yenileri hem de kaldırılanları işaretleyin' gibi ifadeler, her iki tablodaki eşleşmeyen satırların korunmasını gerektirir. Bu, bir FULL OUTER JOIN işlemidir.

Mutabakat ve fark bulma problemleri, bunun tipik kullanım alanlarıdır.

SELECT a.id, b.id
FROM last_month a
FULL OUTER JOIN this_month b ON a.id = b.id
WHERE a.id IS NULL OR b.id IS NULL;

CROSS JOIN İçin İpucu Sözcükler

'Her renkteki her beden,' 'satış olmasa bile mağaza ve gün başına bir satır,' veya 'tüm olası kombinasyonlar' gibi ifadeler CROSS JOIN kullanımına işaret eder.

Belirti, iki küme arasında eşleştirme koşulunun bulunmadığı 'her ... içinde her' veya 'tüm kombinasyonlar' ifadeleridir.

SELECT s.size, c.color
FROM sizes s
CROSS JOIN colors c;

SELF JOIN İçin İpucu Sözcükler

Bir satırı aynı tablodaki başka bir satırla ilişkilendiren ifadeler, örneğin 'her çalışan ve yöneticisi,' 'aynı şehirdeki kullanıcı çiftleri' veya 'yinelenen e-postaları bulma', bir SELF JOIN kullanımını gösterir.

İpucu, bir varlığın aynı türden başka bir varfa başvurması veya onunla karşılaştırılmasıdır.

SELECT e.name, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

Çözümlü Çeviri

İstek: 'Hiç sipariş edilmemiş ürünler de dahil olmak üzere, her ürünün geçen ay kaç kez sipariş edildiğini gösterin.'

Çözümleyelim: 'her ürün' ve 'hiç sipariş edilmemiş ürünler de dahil' ifadeleri tüm ürün satırlarının korunması gerektiği anlamına gelir; bu nedenle ürünleri siparişlere LEFT JOIN ile bağlayın, ardından sipariş tarafında COUNT kullanın (eşleşmeyen ürünlerde sonuç 0 olur; çünkü COUNT, NULL değerlerini yok sayar).

SELECT p.name, COUNT(o.order_id) AS times_ordered
FROM products p
LEFT JOIN orders o
  ON o.product_id = p.id
 AND o.order_date >= DATE '2024-05-01'
GROUP BY p.id, p.name;

Yaygın Bir Tuzak: ON ile WHERE İçinde Filtreleme

Önceki sorguda tarih filtresi WHERE yerine ON yan tümcesinde bulunur. Bu, uygun sipariş sayısı sıfır olan ürünleri korur.

order_date >= ... ifadesini WHERE içine taşısaydınız, eşleşmeyen ürünlerin NULL satırlarını eler ve LEFT JOIN işlemini sessizce INNER JOIN işlemine dönüştürürdü; böylece istekte özellikle korunması istenen ürünleri kaldırırdı.

-- WRONG: WHERE on the outer table removes unmatched products
-- ...
-- LEFT JOIN orders o ON o.product_id = p.id
-- WHERE o.order_date >= '2024-05-01'  <-- becomes an inner join

Karar Çerçevesi

Her sözel birleştirme problemini şu kontrol listesinden geçirin:

  • Aynı tablo kendi içinde mi ilişkilendiriliyor? -> SELF JOIN (derinlik sınırsızsa özyinelemeli bir CTE kullanmayı değerlendirin).
  • Koşul olmadan her kombinasyon mu? -> CROSS JOIN.
  • Yalnızca eşleşen satırlar mı? -> INNER JOIN.
  • Taraflardan birinin tüm satırlarını mı koruyacaksınız? -> LEFT JOIN.
  • Her iki taraftaki eşleşmeyenleri mi koruyacaksınız? -> FULL OUTER JOIN.
  • Eşleşmesi olmayan satırlar mı? -> karşıt birleştirme (LEFT JOIN + IS NULL).

Hızlı Kontrol

Çerçeveyi bir sözel probleme uygulayın.

Özet: Doğru Birleştirme Türünü Seçme

Temel çıkarımlar:

  • Her birleştirme kararına hangi eşleşmeyen satırların korunması gerektiğini sorarak başlayın.
  • İpucu sözcüklerini eşleştirin: 'tümü/dahil' -> LEFT, 'asla/hiçbir' -> karşıt birleştirme, 'her ... içinde her' -> CROSS, 'her X ve kendi X'i' -> SELF, mutabakat -> FULL OUTER.
  • Dış birleştirme filtrelerini ON yan tümcesinde tutun; WHERE içindeki bir filtre, LEFT JOIN işlemini fark ettirmeden INNER JOIN işlemine düşürebilir.
  • Mülakatlarda çerçeveyi sözlü olarak ifade edin; bu, ezberden çok akıl yürütme becerisini gösterir.

Sıkça Sorulan Sorular

“Doğru Birleştirme Türünü Seçme” dersi ücretsiz mi?

Evet — “Doğru Birleştirme Türünü Seçme” 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.

“Doğru Birleştirme Türünü Seçme” dersinde ne öğreneceğim?

Bir sözel problemden doğru birleştirmeyi seçmek için karar çerçevesi kullanın. 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 4. dersidir.

“Doğru Birleştirme Türünü Seçme” 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. CROSS JOIN ve Kartezyen Çarpımlar
  2. Hiyerarşiler için SELF JOIN
  3. Tek Bir Tablo İçindeki Satırları Karşılaştırma
  4. Doğru Birleştirme Türünü Seçme
← SQL Interview Prep Sayfasına Dön