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

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

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:

  1. Struktury organizacyjne – np. lista pracowników i ich przełożonych.
  2. Porównywanie wartości – np. porównanie pensji pracowników względem siebie.
  3. 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

KajoDataSpace