5
我有一個Employee表像獲取所有的員工誰直接或間接地報告給員工,以層級沒有
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
我想所有直接或間接地報告給Sumanta或EMP_ID員工(1 ),並與層級,就像這樣:
emp_id hierarchy_level emp_name
------ --------------- ----------
2 1 Arpita
4 1 Sujon
5 2 Arpan
6 3 Jayanti
我新的SQL,只是找不到用什麼或如何得到這些結果。值得使用表值變量的存儲過程,還是隻需要一個Tsql select查詢就足夠了。任何幫助是最受歡迎的。
我所做的是 -
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;
但這是正確的高達2級,我甚至不能產生hierarchy_level沒有。 任何建議,想法............將是最有幫助.........
謝謝.... Andomar。 – Sukanta 2013-04-26 14:10:24
「隨着CTE爲( 選擇emp_id,EMP_NAME,的Reports_To,1爲Level 從EMP其中的Reports_To = 1 聯盟所有 選擇E.emp_id,E.emp_name,E.reports_to,等級+ 1 FROM EMP爲E 內加入CTE on E.reports_to = CTE.emp_id ) Select * from CTE;' 剛剛發現正是我一直在尋找.... @Andomar 感謝 – Sukanta 2013-04-26 14:12:15
哇,我不知道SqlFiddle – 2013-04-26 14:24:11