Aktualnie używam kwerendy CTE do rekurencyjnego budowania hierarchii pracowników z tabeli pracowników, podobnie jak pokazuje to większość przykładów rekursywnych. Gdzie utknąłem, to to, że próbuję zapytać o jednego pracownika i odzyskać hierarchię nad nim. Poniżej jest przykład tabeli próbuję pracować z:Rekurencja CTE SQL: Powracanie rekordów rodzica
Employees
===========================================================================
EmployeeID MgrID Name
1 null Joe
2 1 John
3 2 Rob
4 2 Eric
Poniżej znajduje się SQL, który umożliwia mi wyświetlić hierarchię od góry do dołu:
with employeeMaster as (
select p.EmployeeID, p.MgrID, p.Name
from Employees p
where p.MgrID is null
union all
select c.EmployeeID, c.MgrID, c.Name
from employeeMaster cte inner join Employees c on c.MgrID = cte.EmployeeID
)
select * from employeeMaster
Gdzie jestem zakleszczony jest że nie mogę wymyślić, w jaki sposób zapytać o pracownika najniższego szczebla, Roba lub Erica, i zwrócić hierarchię nad nim z Joe> John> Eric. Wydaje się, że to powinno być łatwe, ale nie mogę tego dostrzec dla mojego życia.
Posługując się przykładem tabeli w moim poście, chciałbym zapytać o Erica i zwrócić zestaw rekordów z trzema rekordami pokazującymi jego rekord i dwie osoby nad nim. Ostatecznym celem jest sprawdzenie każdego pracownika i zobaczenie łańcucha dowodzenia tego pracownika aż po samą górę. – Tehrab
Edytowałem, żeby dać ci Erica i jego menedżerów. –
Zawsze proste rzeczy. Oznaczono jako odpowiedź. – Tehrab