【发布时间】:2013-04-20 09:23:00
【问题描述】:
我有一个像这样的员工表
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 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 编号。 任何建议,想法............将是最有帮助的............
【问题讨论】:
标签: sql sql-server foreign-keys iteration primary-key