Archiwa tagu: sql left join

SQL LEFT JOIN

SQL LEFT JOIN


    


DEFINICJA

LEFT JOIN służy także do łączenia tabel. Dla lepszego zobrazowania procesu łączenia LEFT JOIN wyobraźmy sobie sytuację gdzie mamy dwie tabele: tabela 1 (zwana dalej t1) po lewej stronie i tabela 2 (zwana dalej t2) po prawej stronie. Każda z tabel posiada pole (klucz) wg którego będziemy łączyć obie tabele: t1.klucz i t2.klucz (pamiętamy, że pola te muszą być tego samego typu). W przypadku zastosowania LEFT JOIN przy złączeniu system weźmie wszystkie wartości z t1.klucz (tabela po lewej stronie polecenia LEFT JOIN) i będzie próbował dopasować takie same wartości z t2.klucz (tabela po prawej stronie polecenia LEFT JOIN). Jeśli ich nie znajdzie po prawej stronie (czyli po stronie t2) wpisze w to miejsce wartość NULL, oznaczającą brak dopasowania, brak wartości po stronie t2. LEFT JOIN używamy po słówku FROM. LEFT JOIN stosuje się w sytuacji kiedy nie jesteśmy pewni czy łącząc dwie tabele wyszukamy połączenie dla wszytkich rekordów po obu stronach. Jeżeli jesteśmy pewni, że to połączenie będzie, to stosujemy raczej INNER JOIN. W przypadku znalezienia dopasowania wartości po obu stronach (obu tabel) LEFT JOIN i INNER JOIN powinny zwrócić takie same wyniki.
Po złączeniu mamy dwie możliwości. Jeżeli chcemy uzyskać wszystkie wartości z tabeli 1 + część wspólną (grafika poniżej) to korzystamy ze składni:

SQL LEFT JOIN grafika

SQL LEFT JOIN składnia

SELECT
    nazwa_kolumny(kolumn)
FROM
    tabela1 LEFT  JOIN tabela2 ON (tabela1.klucz = tabela2.klucz)

a jeśli chcemy uzyskać wszysktie wartości z tabeli 1 ale bez tych które stanowią część wspólną to oprócz złączenia JOIN LEFT musimy szukać tych które po stronie tabeli 2 mają wartość NULL, czyli

SQL LEFT JOIN składnia

SELECT
    nazwa_kolumny(kolumn)
FROM
    tabela1 LEFT  JOIN tabela2 ON (tabela1.klucz = tabela2.klucz)
WHERE
    tabela2.klucz IS NULL