Giriş
Join tiplerini görsel olarak gösteren resimler burada.
İki çeşit LEFT JOIN var.
1. LEFT JOIN
2. LEFT JOIN (IF NULL)
1. LEFT JOIN
Soldaki tablonun tamamını ve sağdaki tablonun kesişimini verir. Dolayısıyla soldaki tablo ile kesişimi olmayan satırlar için bazı sütunlar null gelir.
Soldaki tablonun tamamını ve sağdaki tablonun kesişimini verir. Dolayısıyla soldaki tablo ile kesişimi olmayan satırlar için bazı sütunlar null gelir.
Söz dizimi şöyle.
WHERE Koşulu
Açıklaması şöyle. Soldaki veya sağdaki tablo için where koşulu yazılabilir.
İki tablo birleşirken sağdaki tabloda kesişim yoksa satırlar null gelir. Şöyle yaparız.
Şöyle yaparız. Where koşulu soldaki tablo üzerinde. Ayrıca LEFT JOIN ile and bile kullanılıyor
SELECT ... FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.company_id
WHERE ...
SELECT ile görmek istediğimiz sütunları belirtiriz. FROM kelimesinden sonra sol taraftaki tabloyu belirtiriz. LEFT OUTER JOIN kelimesinden sonra sağ taraftaki tabloyu belirtiriz. ON kelimesinden sonra birleştirme sütununu belirtiriz.WHERE Koşulu
Açıklaması şöyle. Soldaki veya sağdaki tablo için where koşulu yazılabilir.
This ensures that the filtering occurs before the LEFT JOIN, not after which would completely change the data set returned.Örnek
İki tablo birleşirken sağdaki tabloda kesişim yoksa satırlar null gelir. Şöyle yaparız.
X | Y | Z
----------------------
u1 | abc1 | dallas
u2 | abc1 | dallas
u3 | abc2 | erika
u4 | NULL | NULL
ÖrnekŞöyle yaparız. Where koşulu soldaki tablo üzerinde. Ayrıca LEFT JOIN ile and bile kullanılıyor
SELECT p.LastName,
ft.TransactionAmount,
ft.TransactionDate,
ft.TransactionTime
FROM Personnel.Person AS p
LEFT JOIN Finance.FinancialTransaction AS ft
ON p.PersonID = ft.PersonID
AND ft.TransactionAmount > 14
WHERE p.DateOfBirth < '1/1/1980';
Örnek
Şöyle yaparız. Where koşulu sağdaki tablo üzerindeSELECT c.*
FROM company c
LEFT JOIN owner o
ON c.id = o.company_id
WHERE
o.company_id IS NULL OR -- companies without owners
o.verified IS NOT NULL; -- companies with verified owners
2. LEFT JOIN (IF NULL)Soldaki tablonun, sağdaki tablo ile kesişmeyen kısımlarını verir.
Aslında kesişmeyen kısımları bulmak için 3 tane yöntem var
1. LEFT JOIN (IF NULL)
2. NOT EXISTS
3. NOT IN
Örnek
Şöyle yaparız
-- LEFT JOIN IS NULL SELECT s.name FROM students s LEFT JOIN courses c ON s.student_id = c.student_id WHERE c.student_id IS NULL; -- NOT EXISTS SELECT s.name FROM students s WHERE NOT EXISTS ( SELECT 1 FROM courses c WHERE c.student_id = s.student_id ); -- NOT IN SELECT name FROM students WHERE student_id NOT IN ( SELECT student_id FROM courses );
Örnek
Şöyle yaparız
SELECT from tableA A LEFT JOIN tableB B on A.key = B.key WhERE B.key is NULL;
Hiç yorum yok:
Yorum Gönder