Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача на иерархию / 5 сообщений из 5, страница 1 из 1
01.02.2017, 19:50
    #39396718
Антон Щёлкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача на иерархию
Всем добрый вечер.

Дана таблица Employees (айдюк сотрудника, айдюк руководителя, фамилия руководителя, имя руководителя).
Нужно вывести список руководителей, у которых есть только один сотрудник, который никем не руководит (т.е. последний в иерархии). Требуется сделать это одним селектом. Под списком руководителей подразумевается айдюк и ФИО (ФИО просто для информации).


Я додумался только до такого варианта, но что-то мне подсказывает, что он неверен:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select em.manager_id
from employees em
inner join employees e
on e.emp_id = em.manager_id

inner join employees emn
on e.emp_id != emn.manager_id

having count(e.emp_id) = 1
group by em.manager_id



Можно ли как-то решить эту задачу не используя специфичные оракловые операторы и функции?
...
Рейтинг: 0 / 0
01.02.2017, 20:59
    #39396757
watson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача на иерархию
Код: plsql
1.
2.
3.
4.
5.
select manager_id
from employee
where id not in (select manager_id from employee)
having count(manager_id) = 1
group by manager_id;
...
Рейтинг: 0 / 0
01.02.2017, 22:24
    #39396803
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача на иерархию
watson,

У босса всех боссов нет босса, т.е. его manager_id скорее всего NULL. Посему:

Код: plsql
1.
2.
3.
4.
5.
select manager_id
from employee
where id not in (select manager_id from employee where manager_id is not null)
having count(manager_id) = 1
group by manager_id;



SY.
...
Рейтинг: 0 / 0
01.02.2017, 23:24
    #39396824
Антон Щёлкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача на иерархию
watson, SY
спасибо за помощь, тему можно закрывать.
...
Рейтинг: 0 / 0
02.02.2017, 12:37
    #39397160
watson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача на иерархию
SY,

Точно. Либо он сам себе босс id = manager_id :)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача на иерархию / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]