
W świecie SQL mamy kilka sposobów na łączenie tabel, a jednym z nich jest FULL JOIN. Jest to operacja, która potrafi połączyć dane z dwóch tabel w bardzo użyteczny sposób. Jeśli kiedykolwiek spotkałeś się z pojęciami LEFT JOIN i RIGHT JOIN, to FULL JOIN jest połączeniem obu tych podejść.
Co to jest FULL JOIN?
FULL JOIN w SQL to operacja, która zwraca wszystkie rekordy zarówno z lewej, jak i z prawej tabeli. Jeśli nie ma dopasowania w jednej z tabel, SQL zwróci wartość NULL
w brakujących kolumnach.
Składnia FULL JOIN
Oto podstawowa składnia FULL JOIN:
SELECT kolumny
FROM tabela1
FULL JOIN tabela2
ON tabela1.klucz = tabela2.klucz;
Przyjrzyjmy się teraz przykładowi, który pokaże działanie tego typu zapytania.
Przykład użycia FULL JOIN
Załóżmy, że mamy dwie tabelki: Klienci
i Zamówienia
. Chcemy uzyskać pełną listę klientów i zamówień, nawet jeśli niektóre zamówienia nie mają przypisanego klienta lub niektórzy klienci jeszcze nic nie zamówili.
Struktura tabel
Klienci | Zamówienia |
---|---|
|
|
Jak widzimy, mamy trzech klientów i trzy zamówienia. Warto zwrócić uwagę, że zamówienie nr 3 zostało złożone przez nieistniejącego w tabeli klienta (ID = 4), a klient Tomasz nie ma żadnego zamówienia.
Zapytanie FULL JOIN
SELECT Klienci.ID, Klienci.Imie, Zamówienia.Produkt
FROM Klienci
FULL JOIN Zamówienia
ON Klienci.ID = Zamówienia.Klient_ID;
Wynik zapytania
+------+--------+---------+
| ID | Imie | Produkt |
+------+--------+---------+
| 1 | Anna | Laptop |
| 2 | Jan | Telefon |
| 3 | Tomasz | NULL |
| NULL | NULL | Tablet |
+------+--------+---------+
Jak widzimy:
- Klient Anna i Jan mają przypisane zamówienia.
- Klient Tomasz nie dokonał jeszcze żadnego zamówienia, więc kolumna
Produkt
zawiera wartośćNULL
. - Istnieje zamówienie (Tablet), które nie ma odpowiadającego mu klienta, więc pola
ID
iImie
zawierająNULL
.
Kiedy warto używać FULL JOIN?
FULL JOIN jest przydatny w kilku przypadkach, szczególnie gdy:
- Chcemy uzyskać pełne zestawienie danych z dwóch tabel, niezależnie od tego, czy istnieją dopasowania.
- Analizujemy brakujące relacje między tabelami.
- Budujemy raporty, które muszą uwzględniać zarówno pasujące, jak i niepasujące rekordy.
FULL JOIN a inne rodzaje JOIN
Dla lepszego zrozumienia FULL JOIN porównajmy go z innymi typami JOIN:
- INNER JOIN – zwraca tylko rekordy, które mają odpowiedniki w obu tabelach.
- LEFT JOIN – zwraca wszystkie rekordy z lewej tabeli oraz pasujące rekordy z prawej.
- RIGHT JOIN – zwraca wszystkie rekordy z prawej tabeli oraz pasujące rekordy z lewej.
- FULL JOIN – łączy LEFT JOIN i RIGHT JOIN, zwracając wszystkie rekordy z obu tabel.
Podsumowanie
FULL JOIN w SQL to potężne narzędzie, które pomaga analizować dane z dwóch tabel, nawet jeśli nie pasują one do siebie idealnie. Jeśli kiedykolwiek masz sytuację, w której potrzebujesz pełnego obrazu – zarówno dopasowanych, jak i brakujących rekordów – FULL JOIN będzie najlepszym wyborem.
Inny ciekawy artykuł:
Jak działa RIGHT 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.