
Self join w SQL to jedno z ciekawszych podejść do pobierania danych z tej samej tabeli w taki sposób, jakbyśmy łączyli dwie osobne tabele. Brzmi trochę zagadkowo? Już wyjaśniam!
Czym jest SELF JOIN?
Self join to rodzaj operacji JOIN w SQL, gdzie tabela łączy się sama ze sobą. Możemy to sobie wyobrazić jako tworzenie dwóch instancji tej samej tabeli i ich połączenie na podstawie relacji między danymi. Aby to osiągnąć, korzystamy z aliasów tabel, dzięki czemu SQL wie, które instancje tabeli są wykorzystywane.
Przykład działania SELF JOIN
Rozważmy prostą tabelę Pracownicy
, która zawiera kolumny:
- ID – unikalny identyfikator pracownika
- Imię – imię pracownika
- Rola – stanowisko
- ID_Szefa – identyfikator szefa danego pracownika
Nasza przykładowa tabela wygląda tak:
ID | Imię | Rola | ID_Szefa |
---|---|---|---|
1 | Jan | CEO | NULL |
2 | Alicja | Manager | 1 |
3 | Piotr | Developer | 2 |
Aby pobrać listę pracowników wraz z ich szefami, możemy użyć SELF JOIN-a:
SELECT
pracownik.Imię AS 'Pracownik',
szef.Imię AS 'Szef'
FROM Pracownicy AS pracownik
LEFT JOIN Pracownicy AS szef
ON pracownik.ID_Szefa = szef.ID;
Rezultatem zapytania będzie:
Pracownik | Szef |
---|---|
Alicja | Jan |
Piotr | Alicja |
Dlaczego warto znać SELF JOIN?
SELF JOIN to bardzo przydatne narzędzie w SQL, ponieważ pozwala:
- Pracować z relacjami hierarchicznymi (np. relacja pracownik-szef).
- Porównywać rekordy w ramach tej samej tabeli.
- Tworzyć analizy i raporty, np. listy zastępowanych i zastępujących pracowników.
Kiedy stosować SELF JOIN?
Oto kilka typowych sytuacji, gdy warto wykorzystać SELF JOIN:
- Struktury organizacyjne – np. lista pracowników i ich przełożonych.
- Porównywanie wartości – np. porównanie pensji pracowników względem siebie.
- Rekordy powiązane ze sobą – np. analiza klientów poleconych przez innych klientów.
Podsumowanie
Self join to potężne narzędzie w SQL, które pozwala na analizę powiązań w ramach jednej tabeli. Dzięki użyciu aliasów możemy łatwo manipulować hierarchicznymi danymi i wykonywać złożone operacje na rekordach. Mimo że może wydawać się skomplikowany, jego zastosowanie znacząco rozszerza możliwości analizy i raportowania w bazach danych.
Inny ciekawy artykuł:
Jak działa CROSS 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.