İsmail Cem YALNIZ

İsmail Cem Yalnız

Bilgisayar Mühendisi

Anasayfa Hakkımda Makaleler İletişim bayrağımız

Sql Server Left Join Kullanimi

Tarih: 12/21/2014

Sql server da join islemi, ihtiyacimiza göre iki yada daha fazla tabloyu birlestirmemize olanak saglar. Ancak her bir join islemini 2 farkli tablodan birbiriyle esit olan sütunlarini birlestirmek için yazariz. Sizlere join yöntemlerinden LEFT JOIN i anlatacagim.

LEFT JOIN left (sol) tabloda bulunan satirlarin tamamini getirir. Sol tablo ve sag tablo olayi ise sql sorgumuzda yazdigimiz “left join” anahtar kelimesinin solunda ve saginda yazdigimiz tablolari ifade eder. MARKA tablosuna urun tablosunu LEFT JOIN ile baglarsaniz sag tabloda(URUN)  eslesen kayit var midir yok mudur buna bakmaz. Sol tabloyu(MARKA) tamamen getirir ve eslesmeyen kayit varsa sag tablodaki bulunan sütunlarin tamami null(bos) olarak gelir.


Resim 1

Ürün tablomuzda bulunan veri asagidadir:


Resim 2

Marka Tablomuzda bulunan veri asagidadir:


Resim 3

Simdi yukaridaki resimlerde görüldügü gibi MARKA ve ÜRÜN adinda 2 farkli tablomuz var. Marka tablomuzun essiz ID degerini ürün tablomuzdaki MARKA_ID ile esitleyelim. Çünkü bu tabloyu gelistirirken bunlarin esit oldugunu biliyorum, ona göre iliskilendirdim. Ve gelin simdi left join sql sorgusu ile hangi markanin hangi ürünü olduguna bakalim

 

SELECT MARKA.ID,MARKA.SIRKET_UNVANI,MARKA.MARKASI,URUN.URUN_ADI,URUN.CESIT_NO 
FROM MARKA LEFT JOIN 
URUN ON MARKA.ID = URUN.MARKA_ID

 

Yukarida gördügünüz gibi MARKA tablosundan
Tüm sütunlari, URUN TABLOSUNDAN ise URUN_ADI VE CESIT_NO sütununu çekmek istedim.

Sonuç asagidadir:


Resim 4

Evet gördügünüz gibi sorgumuzda sol tablomuz olan marka tablosunun tüm sütunlari geldi ve sag tablomuzda yalnizca 2 kayit oldugundan ve sadece onlarin eslestiginden dolayi sag tablomuz olan URUN tablosundan sadece 2 kayit geldi ve diger kayitlar için sag tablomuza(URUN) ait sütunlar NULL geldi. Iste LEFT JOIN budur!

NOT: Sql sorgumuzda dikkat ettiginiz üzere MARKA tablosunun tüm alanlarini getirdik. Özellikle çok sütunlu tablolarda büyük kolaylik saglayan sql server bizlere MARKA.* yaparak da yine marka tablosundaki tüm verileri getirebilmektedir. Ancak sütunlarin gelis sirasi bu sefer veritabanindaki siraya göre gelecektir. Bu sira Resim 1 de MARKA tablosu için  baktiginizda  sirasiyla ID, MARKASI ve SIRKET_UNVANI dirç. Bu durumda sorgumuz ve sonucu Resim 5 te asagidaki gibi olacaktir:

 

SELECT MARKA.*,URUN.URUN_ADI,URUN.CESIT_NO 
FROM MARKA LEFT JOIN 
URUN ON MARKA.ID = URUN.MARKA_ID

 
Resim 5

 

Faydali olmasi dilegiyle…

 

 KATEGORİLER