|
SQL LEFT JOIN Kullanımı
LEFT JOIN ile iki adet tablomuzdaki kayıtları belli bir kritere göre birleştirebiliriz. Burada asıl olan birinci tablodaki kayıtlardır. İkinci tablodan sadece birinci tabloda olan kayıtlar alınır. İkinci tabloda olupta birinci tabloda olmayan alanların değeri boş (NULL) olarak gelecektir
LEFT JOIN Kullanım Biçimi
SELECT alan_ad(lari)
FROM tablo1 LEFT JOIN tablo2
ON tablo1.alan_adi=tablo2.alan_adi |
veya
SELECT alan_ad(lari)
FROM tablo1 LEFT OUTER JOIN tablo2
ON tablo1.alan_adi=tablo2.alan_adi |
NOT: LEFT JOIN aynı zamanda LEFT OUTER JOIN olarak da kullanılabilir.
Burada görüleceği üzere From ifadesi ile birinci tablomuzu ve ardından LEFT JOIN
(veya LEFT OUTER JOIN) ile ikinci tablomuzu belirtmiş oluyoruz. ON ile hangi alanların
eşitleneceği gösterilmektedir. Birinci tabloda ki bütün kayıtlar seçilir. Buna karşılık eşitlenen alanlara bakılarak ikinci tablodan sadece birinci tabloda olan kayıtlar seçilir. Mesela id_no
alanına göre eşitleme yapılırsa birinci tabloda id_no alanında 1,2,3,4,5,6,7 kayıtları
ve ikinci tabloda id_no alanında 3,4,9,10,11,15 kayıtları varsa; birinci tablodaki bütün kayıtlar alınırken ikinci tablodan sadece birinci tablodakine eşit olan kayıtlar alınır.
Yani ikinci tablodan sadece 3 ve 4 id nolu kayıtlar alınır.
Örnek Tablo Uygulaması:
Örnek olarak aşağıdaki gibi Müşteriler isimli tablomuz olsun.
id |
Adi_soyadi |
1 |
Salih
ESKİOĞLU |
2 |
Ayhan
ÇETİNKAYA |
3 |
Serkan
ÖZGÜREL |
4 |
İlhan
ÖZLÜ |
İkinci tablomuz olan Satışlar ise aşağıdaki gibi olsun.
id |
Satilan_mal |
Satis_fiyati |
1 |
Buzdolabi |
1200 |
2 |
LCD TV |
1800 |
5 |
LCD TV |
1750 |
8 |
Çamaşır
Makinesi |
950 |
Örnek1:
SELECT *
FROM Mutseriler LEFT JOIN Satislar
ON Musteriler.id=Satislar.id
Bu kodda iki tablodaki id alanları eşitlenmiş. Birinci tablodan bütün kayıtlar
alınacaktır. İkinci tablodan ise id alanında sadece 1 ve 2 yazan kayıtlar
alınacaktır. id alanında 5 ve 8 yazan kayıtlar dikkate alınmayacaktır. Çünkü
birinci tabloda 5 ve 8 id numarasına sahip kayıt bulunmamaktadır.
Çıktısı:
id |
Adi_soyadi |
Satilan_mal |
Satis_fiyati |
1 |
Salih
ESKİOĞLU |
Buzdolabı |
1200 |
2 |
Ayhan ÇETİNKAYA |
LCD TV |
1800 |
3 |
Serkan ÖZGÜREL |
|
|
4 |
İlhan ÖZLÜ |
|
|
Örnek2:
SELECT Adi_soyadi, Satilan_mal
FROM Musteriler LEFT JOIN Satislar
ON Musteriler.id=Satislar.id
Bu kod ile sadece adı soyadı ve satılan mal alanları seçilmiş. Gene aynı şekilde
id alanları eşit olan kayıtlar işleme alınmış. Çıktıya dikkat edilirse id alanı
çıktı alanları arasında yoktur. Çünkü select ile ilgili alan belirtilmemiştir.
Çıktısı:
Adi_soyadi |
Satilan_mal |
Salih
ESKİOĞLU |
Buzdolabı |
Ayhan ÇETİNKAYA |
LCD TV |
Serkan ÖZGÜREL |
|
İlhan ÖZLÜ |
|
Örnek3:
SELECT Adi_soyadi, Satilan_mal, musteriler.id AS id_no
FROM Musteriler LEFT JOIN Satislar
ON Musteriler.id=Satislar.id
ORDER BY id_no ASC
Bu kodda Select ifadesinden sonra musteri tablosundaki id alanı AS ifadesi ile
özel tanım olarak belirtilmiştir. Yani SQL kodu içerisinde müşteri tablosunun id
alanı kısaca id_no olarak kullanılacaktır. AS için detaylı kullanım bilgisine
buradan ulaşabilirsiniz. ORDER BY ile seçilen kayıtlar id numarasına küçükten
büyüğe sıralanmıştır.
Çıktısı:
id_no |
Adi_soyadi |
Sehir |
1 |
Salih
ESKİOĞLU |
Buzdolabı |
2 |
Ayhan ÇETİNKAYA |
LCD TV |
3 |
Serkan ÖZGÜREL |
|
4 |
İlhan ÖZLÜ |
|
|