Bu derste, MySQL LEFT JOIN yan tümcesini ve bunu iki veya daha fazla veritabanı tablosundan gelen verileri sorgulamak için nasıl kullanacağınızı öğreneceksiniz.
MySQL LEFT JOIN deyimi, iki veya daha fazla veritabanı tablosundan veri sorgulamanıza izin verir. LEFT JOIN deyimi, FROM deyiminden sonra görünen SELECT deyiminin isteğe bağlı bir parçasıdır.
LEFT JOIN ile ilgili örnekler ve kullanım aşağıdaki şema kullanılarak yapılmıştır.
kitap ve tur tablolarından veri sorgulayacağınızı varsayalım. Aşağıdaki ifade, iki tabloyu birleştiren LEFT JOIN yan tümcesinin sözdizimini gösterir:
1 2 3 4 5 6 7 | SELECT kitap.kitapad,tur.turad FROM kitap LEFT JOIN tur ON tur.turno = kitap.turno; |
LEFT JOIN yan tümcesini kullanarak tur tablosunu kitap tablosuna dahil ettiğinizde, sol tablodaki kitap satırından birleştirme koşuluna göre (tur.turno = kitap.turno) sağdaki tablodan bir satır eşleşirse, bu satır sonuç kümesine dahil edilmelidir.
Soldaki tablodaki satırın sağdaki satırla eşleşmemesi durumunda, soldaki tablodaki satır da seçilir ve sağ tablodaki “sahte” satırla birleştirilir. Sahte satır, SELECT yan tümcesinde karşılık gelen tüm sütunlar için NULL içerir.
Başka bir deyişle, LEFT JOIN deyimi, hem sağ hem de sol tablodan satırları seçmenize izin verir, ayrıca sağ tabloda (tur) eşleşen eşleşen satır olmasa bile sol tablodaki tüm satırları (kitap).
Aşağıdaki Venn şeması, LEFT JOIN yan tümcesinin nasıl çalıştığını görmenize yardımcı olur. İki daire arasındaki kesişme, her iki tabloda da eşleşen satırlardır ve sol dairenin kalan kısmı, kitap tablosundaki tur tablosunda eşleşen bir sıraya sahip olmayan satırlardır. Bu nedenle, sol tablodaki tüm satırlar sonuç kümesine dahil edilmiştir.
Döndürülen satırların, bu cümlelerin sorguda bulunması durumunda WHERE ve HAVING yan tümcelerinde belirtilen koşullara uyması gerektiğine dikkat edin.
MySQL LEFT JOIN
Örnekleri
Örnek Sorgu: Her öğrencinin okuduğu kitapların sayısını listeleyen sorguyu yapalım. Fakat hiç kitap okumayan öğrencilerin de yanında 0 yazsın.
1 2 3 4 5 6 7 | SELECT ogrenci.ogrno,ogrenci.ograd,ogrenci.ogrsoyad,COUNT(islem.islemno) AS 'KITAPSAYISI' FROM ogrenci LEFT JOIN islem on ogrenci.ogrno=islem.ogrno GROUP BY ogrenci.ogrno ORDER BY KITAPSAYISI |
Dikkat ederseniz JALE SEKMEN isimli öğrenci hiç kitap almadığı için islem tablosundaki karşılığı NULL çıkmıtşır. COUNT ile sayarken NULL alan 0 sayılacaktır.
1 Yorum