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.
Hangi JOIN'i ne zaman kullanmalısınız:
Ö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;
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
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.