![](/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.