İsmail Cem YALNIZ

İsmail Cem Yalnız

Bilgisayar Mühendisi

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

Sql Server Left Join Kullanımı

Tarih: 21.12.2014

Sql server da join işlemi, ihtiyacımıza göre iki yada daha fazla tabloyu birleştirmemize olanak sağlar. Ancak her bir join işlemini 2 farklı tablodan birbiriyle eşit olan sütunlarını birleştirmek için yazarız. Sizlere join yöntemlerinden LEFT JOIN i anlatacağım.

LEFT JOIN left (sol) tabloda bulunan satırların tamamını getirir. Sol tablo ve sağ tablo olayı ise sql sorgumuzda yazdığımız “left join” anahtar kelimesinin solunda ve sağında yazdığımız tabloları ifade eder. MARKA tablosuna urun tablosunu LEFT JOIN ile bağlarsanız sağ tabloda(URUN)  eşleşen kayıt var mıdır yok mudur buna bakmaz. Sol tabloyu(MARKA) tamamen getirir ve eşleşmeyen kayıt varsa sağ tablodaki bulunan sütunların tamamı null(boş) olarak gelir.


Resim 1

Ürün tablomuzda bulunan veri aşağıdadır:


Resim 2

Marka Tablomuzda bulunan veri aşağıdadır:


Resim 3

Şimdi yukarıdaki resimlerde görüldüğü gibi MARKA ve ÜRÜN adında 2 farklı tablomuz var. Marka tablomuzun eşsiz ID değerini ürün tablomuzdaki MARKA_ID ile eşitleyelim. Çünkü bu tabloyu geliştirirken bunların eşit olduğunu biliyorum, ona göre ilişkilendirdim. Ve gelin şimdi left join sql sorgusu ile hangi markanın hangi ürünü olduğuna bakalım

 

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

 

Yukarıda gördüğünüz gibi MARKA tablosundan
Tüm sütunları, URUN TABLOSUNDAN ise URUN_ADI VE CESIT_NO sütununu çekmek istedim.

Sonuç aşağıdadır:


Resim 4

Evet gördüğünüz gibi sorgumuzda sol tablomuz olan marka tablosunun tüm sütunları geldi ve sağ tablomuzda yalnızca 2 kayıt olduğundan ve sadece onların eşleştiğinden dolayı sağ tablomuz olan URUN tablosundan sadece 2 kayıt geldi ve diğer kayıtlar için sağ tablomuza(URUN) ait sütunlar NULL geldi. İşte LEFT JOIN budur!

NOT: Sql sorgumuzda dikkat ettiğiniz üzere MARKA tablosunun tüm alanlarını getirdik. Özellikle çok sütunlu tablolarda büyük kolaylık sağlayan sql server bizlere MARKA.* yaparak da yine marka tablosundaki tüm verileri getirebilmektedir. Ancak sütunların geliş sırası bu sefer veritabanındaki sıraya göre gelecektir. Bu sıra Resim 1 de MARKA tablosu için  baktığınızda  sırasıyla ID, MARKASI ve SIRKET_UNVANI dırç. Bu durumda sorgumuz ve sonucu Resim 5 te aşağıdaki gibi olacaktır:

 

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

 
Resim 5

 

Faydalı olması dileğiyle…

 

 KATEGORİLER