Как получить информацию о ребенке и родительском элементе верхнего уровня с помощью oracle connect by before?
Я хочу получить информацию как о ребенке, так и о родительском элементе верхнего уровня с помощью oracle connect ранее?
Например, следующий запрос извлекает дочернюю информацию и родительский идентификатор,
SELECT last_name, employee_id, manager_id, LEVEL
FROM employees
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id
но я хочу получить родительскую информацию также как
LAST_NAME EMPLOYEE_ID MANAGER_ID LEVEL MANAGER_NAME
------------------------- ----------- ---------- ----------------------------
King 100 1 ?
Cambrault 148 100 2 ?
Bates 172 148 3 ?
Bloom 169 148 3 .
Fox 170 148 3 .
Как я могу справиться с этой проблемой, когда я применил левое соединение после выбора дочерних элементов путем подключения по предыдущему, порядок объектов смешивается.
1 ответ
Решение
Вы можете обратиться к prior
значения в списке выбора:
SELECT last_name, employee_id, manager_id, LEVEL, prior last_name as manager_name
FROM employees
START WITH employee_id = 100
CONNECT BY PRIOR employee_id = manager_id;
LAST_NAME EMPLOYEE_ID MANAGER_ID LEVEL MANAGER_NAME
------------------------- ----------- ---------- ---------- -------------------------
King 100 1
Kochhar 101 100 2 King
Greenberg 108 101 3 Kochhar
Faviet 109 108 4 Greenberg
...
Cambrault 148 100 2 King
Bates 172 148 3 Cambrault
Bloom 169 148 3 Cambrault
Fox 170 148 3 Cambrault
...