Złączenia CROSS JOIN i SELF JOIN

Zapytania CROSS JOIN oraz SELF JOIN są rzadziej stosowane, ale mają swoje unikalne zastosowanie w bazach danych. Oba złączenia są używane do różnych celów, w zależności od potrzeb analizy danych.


📌 CROSS JOIN – Złączenie kartezjańskie

✅ Podstawowa składnia CROSS JOIN:

  • Złączenie CROSS JOIN zwraca iloczyn kartezjański dwóch tabel. Oznacza to, że dla każdego rekordu w pierwszej tabeli, zostaną zwrócone wszystkie rekordy z drugiej tabeli.
  • Zapytanie nie wymaga klauzuli ON, ponieważ nie ma warunku złączenia. Zawiera on wszystkie możliwe kombinacje rekordów z obu tabel.
Przykład
-- Podstawowa Składnia
SELECT kolumny
FROM tabela1
CROSS JOIN tabela2;

-- Przykład
SELECT produkty.nazwa, kategorie.nazwa
FROM produkty
CROSS JOIN kategorie;

📌 SELF JOIN – Złączenie samej tabeli

✅ Podstawowa składnia SELF JOIN:

  • SELF JOIN jest używane do łączenia tabeli z samą sobą. W praktyce, musimy używać aliasów, aby rozróżnić dwie wersje tej samej tabeli.
  • Złączenie to jest użyteczne w przypadku, gdy mamy dane w jednej tabeli, które są ze sobą powiązane, na przykład w hierarchicznych danych, takich jak pracownicy i ich menedżerowie.
Przykład
-- Podstawowa składnia SELF JOIN
SELECT t1.kolumna1, t2.kolumna2
FROM tabela AS t1
JOIN tabela AS t2
ON t1.kolumna = t2.kolumna;

-- Przykład
SELECT p1.imie AS pracownik, p2.imie AS menedzer
FROM pracownicy AS p1
JOIN pracownicy AS p2
ON p1.menedzer_id = p2.id;

Zastosowanie CROSS JOIN i SELF JOIN

✅ CROSS JOIN:

  • Złączenie kartezjańskie CROSS JOIN jest użyteczne, gdy chcemy wygenerować wszystkie możliwe kombinacje rekordów z dwóch tabel. Może być przydatne w przypadkach takich jak tworzenie tabeli cenników, gdzie każda kombinacja produktów i ich cech ma być uwzględniona.

✅ SELF JOIN:

  • Złączenie SELF JOIN jest użyteczne w sytuacjach, gdy tabela zawiera dane, które są powiązane z innymi rekordami tej samej tabeli. Może być wykorzystywane do zarządzania hierarchią danych, np. w przypadku pracowników i menedżerów w firmie, lub powiązanych rekordów, takich jak produkty w kategorii.

Podsumowanie

  • CROSS JOIN zwraca iloczyn kartezjański dwóch tabel, łącząc każdy rekord z pierwszej tabeli z każdym rekordem z drugiej tabeli.
  • SELF JOIN pozwala na łączenie tabeli z samą sobą, używając aliasów, co jest przydatne w przypadku relacji hierarchicznych (np. pracownicy i ich menedżerowie).
  • CROSS JOIN nie wymaga warunku złączenia, natomiast SELF JOIN używa warunku złączenia opisanego w klauzuli ON.
  • Oba złączenia są rzadziej używane, ale mają swoje miejsce w bardziej zaawansowanych zapytaniach i specyficznych przypadkach analizy danych.