Tarayıcınız JavaScript! desteklememektedir.

Outer Join Nedir ve Nasil Kullanilir

Herkese Merhaba,

Önceki makalelerimde Join (Birlestirici) ifadesini ve daha sonrasinda JOIN ifadelerinden bir tanesi olan Inner Join hakkinda bir makale ile devam etmistim. Eger bu iki makaleyi okumadiysaniz önce  “ Iki Tabloyu Birlestirme - Join Kullanimi ” ve ardindan “ Inner Join Nedir? Nasil Kullanilir? ” adli makalelerimi okumanizi tavsiye ederim.

Bu makalemde ise JOIN ifadelerinden bir digeri olan OUTER JOIN‘i  anlatacagim. Inner Join ile ilgili olan makalemde birlestirdigimiz tablolarin sadece iliskili alanlarin her ikisinde de deger olan kayitlar sonuç tablomuzda yer almisti.

Inner Join ile ilgili olan makalemizde kullandigimiz örnegi ve sonuç tablosunu hatirlayalim :

Örnek Tablosu :

Sonuç Tablosu :

Peki birlestirme islemi yaptigimiz tablolar arasindan bir tanesinin içinde bulunan verilerin tamamini görmek istersek ne yapmamiz gerekiyor. Örnegin bir mail kullanan veya kullanmayan bütün kullanicilarin Adini ve telefon numarasini görmek istersek ne yapmamiz gerekecek. Iste burada devreye Outer Join giriyor.

Outer Join Nasil Kullanilir?

Outer Join ile iki tabloyu birbirine baglamak için :

Select tbl1.alanAdi, tbl2.alanAdi from tablo1 AS tbl1 Left Outer Join tablo2 AS tbl2 ON tbl1.iliskiliAlan = tbl2.iliskiliAlan

Outer Join ile Inner Join kullanarak ikiden fazla tabloyu birbirine baglamak :

Select tbl1.alanAdi, tbl2.alanAdi,tbl3.alanAdi from tablo1 AS tbl1 Inner Join tablo2 AS tbl2 ON tbl1.iliskiliAlan = tbl2.iliskiliAlan Inner Join tablo3 AS tbl3 ON tbl1.iliskilAlan = tbl3.iliskiliAlan 

Outer Join ile birlikte mutlaka LEFT veya RIGHT kavramini kullanmamiz gerekiyor. Peki buna neye göre kara veriyoruz. Eger LEFT OUTER JOIN kullanirsak baglamak istedigimiz tablodan önce kullandigimiz tablolarin bütün içerigini getirmis oluruz. Ancak RIGHT OUTER JOIN kullanirsak baglamak istedigimiz tablonun bütün içerigini sonuç tablomuzda göstermis oluruz.

Birkaç tane örnek ile daha iyi anlatacagimi düsünüyorum. Inner Join kullanarak yaptigim örnek üzerinden devam etmek istiyorum.

1. Örnek

Kullanicilar tablomuzda bulunan telefon kullanan yada kullanmayan bütün kullanicilarin sonuç tablosunda yer almasini istiyorum.

Sorgu :

Select K.Ad,T.Telefon from Kullanicilar AS K Left Outer Join Telefonlar AS T ON K.ID = T.Kullanici_ID

Sonuç tablosu :

Gördügünüz üzere Kullanici3 ve Kullanici5 bir telefon numarasina sahip degil buna ragmen LEFT OUTER JOIN ifadesini kullandigimiz için sonuç tablosunda yer aldi.

2. Örnek

Bu örnegimizde ise bir telefon kullanan veya kullanmayan ancak en az bir tane mail hesabi kullanan kullanicilarimizi görelim.

Sorgu :

Select T.Telefon,K.Ad,M.mail from Telefonlar AS T Right Outer Join Kullanicilar AS K ON T.Kullanici_ID = K.ID Inner Join Mailler AS M ON K.ID = M.Kullanici_ID

  Sonuç tablosu :

Gördügünüz gibi Kullanici3 ve Kullanici5 telefon numarasi kullanmiyor ancak Her ikiside en az 1 mail hesabina sahip oldugu için sonuç tablosunda yer aldi.