![](/img/trans.png)
[英]Insert multiple parent child records into SQL Server 2008 in a stored procedure
[英]Get Parent Child records sql server 2008
我有如下的COMPANY表
CompanyID CompanyName
1 xyz
2 xyz-c
3 xyz-c1
4 xyz-c2
5 xyz-c-c
6 xyz-c-c1
7 xyz-c-c2
8 xyz-c-c1-c
9 xyz-c-c1-c1
10 xyz-c-c1-c2
我有一个如下的COMPANYMAPPING表
CompanyMapID ParentCompanyID ChildCompanyID
1 1 2
2 1 3
3 1 4
4 2 5
5 2 6
6 2 7
7 6 8
8 6 9
9 6 10
10 11 12
我想通过使用上面的2个表来获取每个公司的子公司记录,恰好我想得到如下的结果
CompanyID CompanyName Level
1 xyz 0
2 xyz-c 1
3 xyz-c1 1
4 xyz-c2 1
5 xyz-c-c 2
6 xyz-c-c1 2
7 xyz-c-c2 2
8 xyz-c-c1-c 3
9 xyz-c-c1-c1 3
10 xyz-c-c1-c2 3
我经历了一些递归CTE的问题,但不适合这样做,我有多组父子记录(多个级别),因此我需要查询才能按顺序提取所有记录
with cte as (
select C.CompanyID, 0 as Level
from COMPANY as C
where C.CompanyID not in (select T.ChildCompanyID from COMPANYMAPPING as T)
union all
select C.ChildCompanyID as CompanyID, A.Level + 1 as Level
from cte as A
inner join COMPANYMAPPING as C on C.ParentCompanyID = A.CompanyID
)
select
C.CompanyID, C.CompanyName, A.Level
from cte as A
inner join COMPANY as C on C.CompanyID = A.CompanyID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.