SQLPytanie 03 z 14
SELF JOIN — pracownik i jego przełożony
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Łączę tę samą tabelę z samą sobą, używając dwóch aliasów. LEFT JOIN zachowuje też osoby bez przełożonego.
SQL
-- employees(id PRIMARY KEY, name, manager_id)
SELECT e.name AS employee, m.name AS manager
FROM employees AS e
LEFT JOIN employees AS m ON m.id = e.manager_id;Doprecyzowanie: INNER JOIN zwróci tylko osoby z dopasowaniem. Tu brak przełożonego daje NULL w kolumnie manager.
Pułapka: filtr WHERE m.name = 'Anna' odrzuci wiersze bez dopasowania. Przy outer joinach znaczenie ma, czy warunek trafia do ON, czy do WHERE.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.