2014-11-02 10 views
1

У меня есть таблицаКак получить результат в следующем сценарии

EMP(id int primary key, name varchar2(15), mgrID int). 

Теперь эта таблица содержит все сотрудники (включая работника и менеджера) в company. mgrID столбце содержит идентификатор сотрудника, которому они сообщают.

Я хочу указать имя рабочего, не являющегося менеджером, вместе с именем своего менеджера. Что делать для такого запроса.

Я попытался вложенным запрос на выборке следующим образом:

select name, (select name from EMP where mgerID is NULL) 
as Manager from EMP; 

Будет ли этот запросу дать должный результат?

ответ

0

Вы можете использовать автообъединение:

SELECT e.name AS name, m.name AS manager_name 
FROM emp e 
JOIN emp m ON e.mgrid = m.id 
+0

спасибо! Оно работает... –

0

Ваш запрос должен не потому, что вы подзапрос некоррелировано и возвращать несколько результатов, если у вас есть несколько менеджеров верхнего уровня.

select name 
    , (select name from EMP b where b.ID = a.mgerID) as Manager 
    from EMP a; 

Я думаю, что автообъединение является более каноническим решением, но вы должны понимать, что связанный подзапрос, а также он имеет много применения.

Смежные вопросы