Sobes.tech
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 Ci si aspetta di ottenere: 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

Risposta dell'AI

Nell'esempio fornito, la query SQL implementa correttamente l'elenco dei dipendenti e dei loro supervisori dalla stessa tabella staff utilizzando un self JOIN.

La tabella staff contiene i campi id, name e head_id, dove head_id è un riferimento all'id del supervisore del dipendente.

Query:

SELECT e.name AS employee_name, m.name AS manager_name
FROM staff e
LEFT JOIN staff m ON e.head_id = m.id
  • e è un alias per i dipendenti.
  • m è un alias per i loro manager.
  • LEFT JOIN garantisce che anche i dipendenti senza manager (ad esempio, Ivan e Bob) avranno una riga con manager_name = NULL.

In questo modo, la query mostra i nomi dei dipendenti e i nomi dei loro supervisori, se presenti, corrispondendo al risultato atteso.