Senior
CREATE TABLE staff ( id TEXT name TEXT head_id TEXT ); id | name | head_id -------------------- 1 | Ivan | NULL 2 | Petr | 1 3 | Alice | 1 4 | Max | 2 5 | Alex | 2 6 | Elena | 4 7 | Bob | NULL Oczekiwany wynik: employee_name | manager_name --------------------------- Ivan | NULL Petr | Ivan Alice | Ivan Max | Petr Alex | Petr Elena | Max Bob | NULL SELECT e.name AS employee_name, m.name AS manager_name FROM staff e LEFT JOIN staff m ON e.head_id = m.id
sobes.tech AI
Odpowiedź od AI
W podanym przykładzie zapytanie SQL poprawnie wyświetla listę pracowników i ich przełożonych z jednej tabeli staff za pomocą self JOIN.
Tabela staff zawiera pola id, name i head_id, gdzie head_id jest odwołaniem do id przełożonego pracownika.
Zapytanie:
SELECT e.name AS employee_name, m.name AS manager_name
FROM staff e
LEFT JOIN staff m ON e.head_id = m.id
eto alias dla pracowników.mto alias dla ich menedżerów.- LEFT JOIN zapewnia, że nawet pracownicy bez menedżera (np. Ivan i Bob) będą mieli wiersz z
manager_name= NULL.
W ten sposób zapytanie wyświetla imiona pracowników i imiona ich przełożonych, jeśli istnieją, co odpowiada oczekiwanemu wynikowi.