Jak działa LEFT JOIN w języku SQL? Przykłady zastosowania

Jak działa LEFT JOIN w języku SQL? Przykłady zastosowania

W pracy z bazami danych często muszę łączyć dane z różnych tabel. Jednym z najczęściej używanych rodzajów złączeń jest LEFT JOIN. To potężne narzędzie w SQL pozwala na pobranie wszystkich rekordów z jednej tabeli i dopasowanie danych z innej, pozostawiając puste wartości tam, gdzie brak dopasowania. W tym artykule wyjaśnię, jak działa LEFT JOIN w języku SQL oraz pokażę praktyczne przykłady jego zastosowania.

Co to jest LEFT JOIN?

LEFT JOIN (czasem nazywany też LEFT OUTER JOIN) to rodzaj złączenia w SQL, który zwraca wszystkie wiersze z tabeli po lewej stronie zapytania (tzw. left table), łącznie z odpowiadającymi im danymi z tabeli po prawej stronie (right table). Jeśli w tabeli po prawej stronie nie ma pasującego rekordu, w wyniku zostaną zwrócone puste wartości (NULL).

Składnia LEFT JOIN

Podstawowa składnia LEFT JOIN wygląda tak:

SELECT kolumny
FROM tabela_lewa
LEFT JOIN tabela_prawa
ON tabela_lewa.klucz = tabela_prawa.klucz;

Kluczowe elementy tej składni to:

  • SELECT – wybiera kolumny, które mają być zwrócone.
  • tabela_lewa – tabela bazowa, z której pobieramy wszystkie rekordy.
  • LEFT JOIN tabela_prawa – określa, że do tabeli bazowej dołączamy dane z drugiej tabeli.
  • ON – warunek złączenia, określający, które rekordy powinny się dopasować.

Przykład zastosowania LEFT JOIN

Załóżmy, że mamy dwie tabele: klienci i zamówienia.

Struktura tabeli „klienci”:

id imie nazwisko
1 Anna Kowalska
2 Jan Nowak
3 Maria Wiśniewska

Struktura tabeli „zamówienia”:

id id_klienta produkt
1 1 Smartfon
2 2 Laptop

Teraz, jeśli chcemy pobrać wszystkich klientów wraz z ich zamówieniami, użyjemy LEFT JOIN:

SELECT klienci.id, klienci.imie, klienci.nazwisko, zamówienia.produkt
FROM klienci
LEFT JOIN zamówienia
ON klienci.id = zamówienia.id_klienta;

Wynik zapytania:

id imie nazwisko produkt
1 Anna Kowalska Smartfon
2 Jan Nowak Laptop
3 Maria Wiśniewska NULL

Widać tutaj, że Maria Wiśniewska nie ma przypisanego zamówienia, więc w kolumnie produkt pojawia się NULL. Dzięki temu LEFT JOIN pozwala nam uzyskać wszystkie dane z tabeli klienci, nawet jeśli nie ma dopasowanych rekordów w tabeli zamówienia.

Główne zalety LEFT JOIN

Korzystając z LEFT JOIN, mogę:

  • Zapewnić, że wszystkie rekordy z głównej tabeli zawsze znajdą się w wyniku.
  • Łatwo zidentyfikować rekordy bez dopasowanych wartości (np. użytkowników bez zamówień).
  • Łączyć dane z różnych tabel, nawet jeśli nie ma pełnej relacji między nimi.

Porównanie INNER JOIN i LEFT JOIN

Często porównuję LEFT JOIN z INNER JOIN, bo różnica między nimi jest kluczowa:

JOIN Opis
INNER JOIN Zwraca tylko te rekordy, które mają dopasowanie w obu tabelach.
LEFT JOIN Zwraca wszystkie rekordy z lewej tabeli, nawet jeśli brak pasujących rekordów w prawej.

Przykład różnicy:

-- INNER JOIN (tylko klienci, którzy mają zamówienia)
SELECT klienci.id, klienci.imie, zamówienia.produkt
FROM klienci
INNER JOIN zamówienia
ON klienci.id = zamówienia.id_klienta;

-- LEFT JOIN (wszyscy klienci, nawet bez zamówień)
SELECT klienci.id, klienci.imie, zamówienia.produkt
FROM klienci
LEFT JOIN zamówienia
ON klienci.id = zamówienia.id_klienta;

Kiedy używać LEFT JOIN?

Stosuję LEFT JOIN w sytuacjach gdy:

  • Potrzebuję wszystkich rekordów z tabeli po lewej stronie, niezależnie od dopasowań.
  • Chcę znaleźć „opuszczone” rekordy, czyli np. użytkowników bez zamówień.
  • Tworzę raporty i chcę uzyskać pełny obraz danych.

Podsumowanie

LEFT JOIN to jedno z podstawowych, ale niezwykle przydatnych narzędzi w SQL. Pozwala na pobranie wszystkich rekordów z tabeli głównej i dołączenie do nich dopasowanych danych lub pustych wartości w przypadku ich braku. To świetne rozwiązanie, gdy muszę analizować dane w relacyjnych bazach danych i chcę mieć pewność, że żadne istotne informacje nie zostaną pominięte.

 

Inny ciekawy artykuł:

Jak działa INNER JOIN w języku SQL? Przykłady zastosowania

KajoDataSpace