2 Temmuz 2020 Perşembe

LEFT JOIN - İki Tablonun Kesişimi Yoksa Sağdaki Satırı Null Döner

Giriş
Join tiplerini görsel olarak gösteren resimler burada.
Şeklen şöyle.
Şeklen şöyle.
İ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.

Söz dizimi şöyle. 
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 üzerinde
SELECT 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.

Ö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