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

Отговор от 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.

По този начин заявката показва имената на служителите и имената на техните ръководители, ако ги има, което съответства на очаквания резултат.