Ho una tabella Impiegato comeRicevi tutte dipendente che riferisce direttamente o indirettamente, a un dipendente, con livello di gerarchia senza
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
voglio ottenere tutti i dipendenti che riporta direttamente o indirettamente a Sumanta o emp_id (1), e con il livello di gerarchia, in questo modo:
emp_id hierarchy_level emp_name
------ --------------- ----------
2 1 Arpita
4 1 Sujon
5 2 Arpan
6 3 Jayanti
sono nuovo di SQL e proprio non riuscivo a trovare cosa usare o come ottenere questi risultati. Vale la pena memorizzare una procedura con una variabile valutata a livello, o solo una query di selezione Tsql sarà sufficiente. Qualsiasi aiuto è il benvenuto.
tutto ciò che ho fatto è-
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;
ma questo è preciso fino a 2 livelli e smusso persino generare il hierarchy_level no. Qualsiasi suggerimento, idea ............ sarà più utile .........
Grazie .... Andomar. – Sukanta
'Con CTE come ( Select emp_id, emp_Name, reports_to, 1 come Livello da emp dove reports_to = 1 Unione tutta Select E.emp_id, E.emp_name, E.reports_to, Livello + 1 da emp come E interno unisciti a CTE su E.reports_to = CTE.emp_id ) Seleziona * da CTE; ' Ho appena trovato esattamente quello che stavo cercando .... @Andomar Grazie – Sukanta
Wow, non sapevo su SqlFiddle –