Могу ли я предложить моделирование данных по-другому (для вдохновения ознакомьтесь с моделью данных HR ванильной компанииoplesoft), но для простоты я только что добавил в таблицу позиций, и следующий запрос дает ожидаемый результат с большей гибкостью:
Select e.id, e.positionid, e.name, p.positionid_reports_to, m.name as Manager
FROM employee e
Left Join position p on e.positionid = p.positionid
Left Join employee m on p.positionid_reports_to = m.positionid;
На основании следующих данных:
INSERT INTO employee(id, positionId, name) VALUES(1, 101, 'Boss');
INSERT INTO employee(id, positionId, name) VALUES(2, 102, 'Joey');
INSERT INTO employee(id, positionId, name) VALUES(3, 103, 'Ross');
INSERT INTO employee(id, positionId, name) VALUES(4, 104, 'Chandler');
INSERT INTO employee(id, positionId, name) VALUES(5, 105, 'Monica');
INSERT INTO position(positionid, positionid_reports_to) VALUES(101, null);
INSERT INTO position(positionid, positionid_reports_to) VALUES(102, 101);
INSERT INTO position(positionid, positionid_reports_to) VALUES(103, 101);
INSERT INTO position(positionid, positionid_reports_to) VALUES(104, 101);
INSERT INTO position(positionid, positionid_reports_to) VALUES(105, 101);