Mam tabeli Employee jakuzyskać wszystkie pracownika, który bezpośrednio lub pośrednio zgłosi się do pracownika, z poziomu hierarchii nie
emp_id bigint,
reports_to bigint,
emp_name varchar(20),
Constraint [PK_Emp] Primary key (emp_id),
Constraint [FK_Emp] Foreign key (reports_to) references [MSS].[dbo].[Emp]([emp_id])
emp_id reports_to emp_name
------ ------ --------------
1 null Sumanta
2 1 Arpita
3 null Pradip
4 1 Sujon
5 2 Arpan
6 5 Jayanti
chcę uzyskać wszystkich pracowników, które bezpośrednio lub pośrednio raporty do Sumanta lub emp_id (1), a także z poziomu hierarchii, na przykład:
emp_id hierarchy_level emp_name
------ --------------- ----------
2 1 Arpita
4 1 Sujon
5 2 Arpan
6 3 Jayanti
Jestem nowy w SQL i po prostu nie mógł znaleźć to, czego używać i jak uzyskać te wyniki. Czy warto jest procedura przechowywana ze zmienną o wartości tabela, lub wystarczy kwerendy wybierania Tsql będzie wystarczające. Każda pomoc jest mile widziana.
Wszystko zrobiłem IS-
Select Ep.emp_id,ep.emp_eame
From Emp as E
Inner Join Emp as Ep on Ep.reports_to=E.Emp_id
Where E.reports_to=1 or E.emp_id=1;
ale to dokładne września 2 poziomie i nie mogę nawet wygenerować hierarchy_level nie. Wszelkie sugestie, pomysł ............ będą najbardziej pomocne .........
Dzięki .... Andomar. – Sukanta
„Z CTE jako ( Wybierz emp_id, emp_name, reports_to, 1 jako poziom Od emp gdzie reports_to = 1 Unia wszystko Wybierz E.emp_id, E.emp_name, E.reports_to, poziom + 1 Z EMP jako E Wewnętrznych dołącz do CTE na E.reports_to = CTE.emp_id ) Wybierz * z CTE; ' Wystarczy znaleźć dokładnie to, czego szukałem .... @Andomar Dzięki – Sukanta
Wow, nie wiedziałem o SqlFiddle –