SQL LEFT JOIN Kullanımı

Hiç yorum yok
LEFT JOIN ile iki adet tablomuzdaki kayıtları belli bir kritere göre birleştirebilir. Burada asıl olan birinci tablondaki 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 tablomuu 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.
idAdi_soyadi
1Salih ESKİOĞLU
2Ayhan ÇETİNKAYA
3Serkan ÖZGÜREL
4İlhan ÖZLÜ
İkinci tablomuz olan Satışlar ise aşağıdaki gibi olsun.
idSatilan_malSatis_fiyati
1Buzdolabi1200
2LCD TV1800
5LCD TV1750
8Çamaşır Makinesi950

Ö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ı:
idAdi_soyadiSatilan_malSatis_fiyati
1Salih ESKİOĞLUBuzdolabı1200
2Ayhan ÇETİNKAYALCD TV1800
3Serkan ÖZGÜREL  
4İlhan ÖZLÜ  
Örnek2:

SELECT Adi_soyadi, Satilan_mal
FROM Musteriler 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_soyadiSatilan_mal
Salih ESKİOĞLUBuzdolabı
Ayhan ÇETİNKAYALCD TV
Serkan ÖZGÜREL 
İlhan ÖZLÜ 
Örnek3:

SELECT Adi_soyadi, Satilan_mal, musteriler.id AS id_no
FROM Musteriler 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_noAdi_soyadiSehir
1Salih ESKİOĞLUBuzdolabı
2Ayhan ÇETİNKAYALCD TV
3Serkan ÖZGÜREL 
4İlhan ÖZLÜ 

Hiç yorum yok :

Yorum Gönder