
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
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.