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…