ProgramlamaBackend Geliştirici

SQL'de INNER JOIN ile OUTER JOIN (LEFT, RIGHT, FULL OUTER JOIN) arasındaki farkı açıklayın ve veri çalışma senaryolarında uygun bir bağlantı türünü nasıl seçeceğinizi anlatın. Her JOIN türünün doğru kullanımına birer örnek verin.

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

INNER JOIN yalnızca belirtilen koşulda her iki birleştirilen tabloda bir eşleşme bulunursa kayıtları döndürür. OUTER JOIN (LEFT, RIGHT, FULL) kullanıldığında sonuç, diğer tabloda eşleşme olmasa bile, bir veya iki tablodan tüm satırları içerir.

  • LEFT OUTER JOIN: sol tablodaki tüm satırlar + varsa sağ tablodan eşleşmeler (aksi takdirde NULL).
  • RIGHT OUTER JOIN: sağ tablodaki tüm satırlar + varsa sol tablodan eşleşmeler (aksi takdirde NULL).
  • FULL OUTER JOIN: her iki tablodan da tüm satırlar; eşleşme yoksa NULL değerleri.

Hangi JOIN'i ne zaman kullanmalısınız:

  • Sadece eşleşen satırları istiyorsanız INNER JOIN kullanın.
  • LEFT JOIN — sol tablodaki tüm satırların önemli olduğu durumlarda, eşleşme olup olmadığına bakılmaksızın.
  • RIGHT JOIN — aynı, ancak sağ tablo için.
  • FULL OUTER JOIN — tam birleşik liste (eşleşmemeleri bulmak için kullanışlı).

Örnekler:

-- INNER JOIN SELECT u.id, u.name, o.amount FROM users u INNER JOIN orders o ON u.id = o.user_id; -- LEFT OUTER JOIN SELECT u.id, u.name, o.amount FROM users u LEFT JOIN orders o ON u.id = o.user_id; -- FULL OUTER JOIN SELECT u.id, o.order_id FROM users u FULL OUTER JOIN orders o ON u.id = o.user_id;

Kandırmaca Soru

Eğer sağ tablo boşsa, LEFT JOIN'in sonucu ne olur?

Çoğu kişi şöyle cevap verir: "LEFT JOIN eşleşme olmadığı için boş bir sonuç döndürür". Doğru: LEFT JOIN her durumda sol tablodaki tüm satırları döndürür ve sağdaki sütunlar NULL olacaktır.

Örnek:

-- users tablosunda kayıtlar var, orders boş SELECT u.id, u.name, o.amount FROM users u LEFT JOIN orders o ON u.id=o.user_id; -- Sonuç: tüm kullanıcılar, o.amount = NULL

Konunun inceliklerini bilmemekten kaynaklanan gerçek hata örnekleri


Hikaye

Satış analitiği projesi. Müşterilerin ve siparişlerinin tam listesini çıkarmak için INNER JOIN kullanıldı, siparişi olmayan müşteriler atlandı. Raporlarda sağ tabloda yok olmaları nedeniyle "önemli" müşteriler kayboldu. Çözüm: LEFT JOIN kullanmak.


Hikaye

Çalışan ve departman takibi platformu. LEFT JOIN yerine RIGHT JOIN kullanılması, yeni departmanlar eklenirken karışıklığa neden oldu: bazı çalışanlar rapora düşmedi. Sebep — birleştirme sırasının karıştırılması.


Hikaye

Veri şemasının göçü. Değişikliklerden sonra, bir JOIN, birleştirme koşulundaki yazım hatası nedeniyle CROSS JOIN'a dönüştü. Sonuç — verilerin boyutunda ani bir artış ve "şişme" meydana geldi. Sonuç: birleştirmelerde her zaman ON belirtin ve JOIN türlerini dikkatlice kontrol edin.