Sobes.tech
Назад к вопросам
Senior
5

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 Ожидаем получить: 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

Компании, где спрашивали
plata

Ответ от нейросети

sobes.tech AI

В приведённом примере SQL-запрос корректно реализует вывод списка сотрудников и их руководителей из одной таблицы staff с помощью self JOIN.

Таблица staff содержит поля id, name и head_id, где head_id — это ссылка на id руководителя сотрудника.

Запрос:

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 — алиас для сотрудников.
  • m — алиас для их менеджеров.
  • LEFT JOIN гарантирует, что даже у сотрудников без менеджера (например, у Иван и Боб) будет строка с manager_name = NULL.

Таким образом, запрос выводит имена сотрудников и имена их руководителей, если они есть, что соответствует ожидаемому результату.