Herkese merhaba,
Bu yazıda SQL Server’da Join Tipleri hakkında bilgi vereceğim.
SQL Server’da Join yapıları en çok kullanılan yapılardır.
İlk olarak Join nedir ona değinelim. Join, birden fazla tabloyu birbirine tablolardaki eş kolonlar aracılığıyla eşitleyerek bağlama işlemidir. Kullandığımız Join çeşidine göre gelen sonuç kümesi değişir.
Aşağıda gördüğünüz görsel Join işlemi hafızanızda bir şeyler oluşturacaktır.
Join işlemi görüldüğü üzere Matematikte görmüş olduğunuz kümeler konusu gibidir. Aslında bir bakımdan da öyledir. İki dataya ait kesişim, birleşim, fark vs gibi çeşitli işlemleri Join yapılarını kullanarak çözeriz.
Aşağıda yazdığım liste çok kullanılan Join yapılarıdır.
1-) JOIN ya da INNER JOIN (İkisi de aynı şeydir)
2-) LEFT JOIN ya da LEFT OUTER JOIN (İkisi de aynı şeydir)
3-) RIGHT JOIN ya da RIGHT OUTER JOIN (İkisi de aynı şeydir)
4-) FULL JOIN ya da FULL OUTER JOIN (İkisi de aynı şeydir)
5-) CROSS JOIN
Yukarıdaki Join yapılarını anlamak için aşağıdaki tabloları oluşturup içlerine verileri ekleyelim.
JOIN ya da INNER JOIN: Kısacak iki tablodaki ortak kayıtları getirir. Sehirler tablosundaki ID kolonu ile Yiyecekler tablosundaki SehirID kolonu eşit olan kayıtları getir diyerek hangi yiyeceğin hangi şehre ait olduğunu gösteren bir sonuç elde edelim.
Görüldüğü üzere Bursa’ya ait herhangi bir veri gelmedi çünkü karşılığında herhangi bir yiyecek ismi yok. INNER JOIN ortak OLAN verileri getirir.
LEFT JOIN ya da LEFT OUTER JOIN: İlk tablodaki kayıtlar tamamen listelenir. Eğer ilk tablodaki kaydın karşılığı ikinci tabloda yoksa ikinci tablodaki değeri NULL olarak döner.
Görüldüğü üzere Bursa’ya ait veri geldi ama Bursa’nın karşılığı olan yiyecek ismi dediğimiz gibi NULL olarak gözüktü çünkü karşılığında herhangi bir yiyecek ismi yok.
RIGHT JOIN ya da RIGHT OUTER JOIN: İkinci tablodaki kayıtlar tamamen listelenir. Eğer ikinci tablodaki kaydın karşılığı ilk tabloda yoksa ilk tablodaki değer NULL olarak döner. Kısaca LEFT JOIN’in tam tersidir diyebiliriz.
Görüldüğü üzere Ayran Aşı’na ait veri geldi ama Ayran Aşı’nın karşılığı olan şehir ismi dediğimiz gibi NULL olarak gözüktü çünkü karşılığında herhangi bir şehir ismi yok.
FULL JOIN ya da FULL OUTER JOIN: LEFT OUTER ve RIGHT OUTER JOIN’in birleştirilmiş hali gibidir. İki tablodaki tüm kayıtlar da döner. Fakat karşılığı olmayan kolonlar NULL olarak döner.
Görüldüğü üzere her iki tabloya ait tüm veriler geldi. Karşılıkları olmayan alanlar NULL olarak geldi.
CROSS JOIN: Tabloların kartezyen çarpımını verir. Yani soldaki tablodaki her satıra karşılık olarak sağdaki tablonun tüm satırlarını döndürür.
Eğer CROSS JOIN’in WHERE koşuluna INNER JOIN’deki ON ifadesine yazdığımız gibi eşitleme işlemi yaparsak INNER JOIN’deki gibi çalışacaktır ve aynı sonucu döndürecektir.
Görüldüğü üzere SQL Server’da Join tiplerini görmüş olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.