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 Espera-se obter: 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 IA

Resposta da IA

Na exemplo fornecido, a consulta SQL implementa corretamente a exibição da lista de funcionários e seus supervisores a partir de uma mesma tabela staff usando um self JOIN.

A tabela staff contém os campos id, name e head_id, onde head_id é uma referência ao id do supervisor do funcionário.

Consulta:

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 é um alias para os funcionários.
  • m é um alias para seus gerentes.
  • LEFT JOIN garante que mesmo os funcionários sem gerente (por exemplo, Ivan e Bob) terão uma linha com manager_name = NULL.

Assim, a consulta exibe os nomes dos funcionários e os nomes de seus supervisores, se houver, o que corresponde ao resultado esperado.