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 Se așteaptă să se obțină: 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

Răspuns de la AI

În exemplul furnizat, interogarea SQL implementează corect afișarea listei de angajați și a managerilor lor din aceeași tabelă staff folosind un self JOIN.

Tabelul staff conține câmpurile id, name și head_id, unde head_id este o referință la id-ul managerului angajatului.

Interogare:

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 este un alias pentru angajați.
  • m este un alias pentru managerii lor.
  • LEFT JOIN asigură că chiar și angajații fără manager (de exemplu, Ivan și Bob) vor avea o linie cu manager_name = NULL.

Astfel, interogarea afișează numele angajaților și numele managerilor lor, dacă există, ceea ce corespunde rezultatului așteptat.