2014-12-10 2 views
0

У меня есть сотрудник таблицы, который имеет данные иерархии менеджера и сотрудника.уровень иерархии в таблице отношений в oracle

Примеры данных.

empId ManId 
    101 100 
    102 100 
1010 101 
1011 101 
10101 1010 

Мне нужно найти уровень, но он не дает мне правильный выход. Мне нужен выход, такой как

level Emp ID Man Id 
1  101  100 
1  102  100 
2  1010  101 
2  1011  101 
3  10101 1010 

Независимо от ввода как идентификатора Эмпа или идентификатора человека, выход должен быть постоянным. Я получаю только выход, когда я использую удостоверение личности менеджера, как 100, но он не работает, когда я прохожу значение в 10101

select distinct 
level, 
manager_id, 
employee_id 
from employees 
START WITH manager_id = 100 
connect by manager_id= prior employee_id 
order by level 
+1

переключатель manager_id и employee_id ВПодключение по-п –

ответ

0

START WITH п используется для указания корневой строки для иерархии, которая является сотрудником идентификатор с 101 значение

Пожалуйста, используйте ниже

select distinct 
     level, 
     manager_id, 
     employee_id 
     from employees 
     where level<=3 
     START WITH employee_id = 101 
     connect by manager_id= prior employee_id 
     order siblings by employee_id 

Update1: -: -Вы можно удалить, если начать с корневой строка не является специфическим

select distinct 
     level, 
     manager_id, 
     employee_id 
     from employees 
     where level<=3 
     connect by manager_id= prior employee_id 
     order siblings by employee_id 

Проверить эту ссылку для получения дополнительной информации Hierarchical Queries

+0

Если я не имею корневой идентификатор и имеет нижний идентификатор, который 1010, может я до сих пор получить требуемую мощность ? – Victor

+0

вы можете манипулировать результатом, если знаете, на каком уровне вы хотите получить результат в случае сотрудника 1010, вы можете добавить, где уровень <= 3 – psaraj12

+0

Он не работает. Я использую ниже запрос выберите manager_id, EMPLOYEE_ID, уровень от сотрудников WHERE уровня <= 3 подключающихся по предварительной employee_id = manager_id порядка по уровню – Victor

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