Raporlama için veritabanından veri çekiyorsanız iki tabloyu birleştirmeniz gerekir. Yanlış JOIN türü eksik ya da fazla satıra yol açar. Bu yazıda JOIN türlerini örneklerle karşılaştırıyoruz.
Örnek tablolar
Musteriler tablosunda MusteriID ve MusteriAdi; Siparisler tablosunda SiparisNo, MusteriID ve Tutar sütunları olduğunu varsayalım. Bir müşterinin birden çok siparişi olabilir, hiç siparişi olmayan müşteri de bulunabilir.
INNER JOIN: yalnızca eşleşenler
SELECT m.MusteriAdi, s.SiparisNo, s.Tutar
FROM Musteriler AS m
INNER JOIN Siparisler AS s ON s.MusteriID = m.MusteriID;
Sonuçta yalnızca siparişi olan müşteriler görünür.
LEFT JOIN: soldaki tablonun tamamı
SELECT m.MusteriAdi, s.SiparisNo
FROM Musteriler AS m
LEFT JOIN Siparisler AS s ON s.MusteriID = m.MusteriID;
Tüm müşteriler listelenir; siparişi olmayanların SiparisNo değeri NULL gelir. Hiç sipariş vermeyen müşterileri bulmak için aynı sorguya WHERE s.SiparisNo IS NULL koşulunu ekleyebilirsiniz.
Türlerin özeti
- INNER JOIN: Her iki tabloda eşleşen satırlar.
- LEFT JOIN: Soldaki tablonun tüm satırları, sağda eşleşme yoksa NULL.
- RIGHT JOIN: Sağdaki tablonun tüm satırları; pratikte tabloların yerini değiştirip LEFT JOIN kullanmak daha okunaklıdır.
- FULL JOIN: İki tablodaki tüm satırlar, eşleşmeyenler NULL ile.
- CROSS JOIN: Tüm olası kombinasyonlar; dikkatli kullanılmalıdır.
Sık yapılan hatalar
- Bire çok ilişkide satırların çoğalmasını fark etmemek.
- Birleştirme koşulunu unutup yanlışlıkla çok büyük bir sonuç üretmek.
- LEFT JOIN yaptıktan sonra sağ tabloya WHERE koşulu koyup sonucu fiilen INNER JOIN’e çevirmek.
Sonraki adım
SQL Server Eğitimimizde sorgu yazmayı, birleştirmeleri, gruplamayı ve pencere fonksiyonlarını kendi veri örnekleriniz üzerinde çalışıyoruz.
Bu konuda eğitim almak ister misiniz?
SQL Server Eğitimi, 18 saat sürer ve kurumunuza özel hazırlanır.