34,575
社区成员
发帖
与我相关
我的任务
分享
--最终需要的结果值
select a.para_id
from para a
inner join (
--获取子表的prcs_id值(二阶)
select x.prcs_id
from prcs x
inner join (
--获取group_id值(三阶)
select group_id from route_group group by group_id ) as y on x.group_id = y.group_id
where x.group_id= y.route_id
group by x.group_id
) as b on a.prcs_id = b.prcs_id
是不是这样子?
Create Table #Tmp_A
(
GROUP_ID Int,
ROUTE_ID Int
)
Create Table #Tmp_B
(
GROUP_ID Int,
PRCS_ID Int
)
Create Table #Tmp_C
(
PRCS_ID Int,
PARA_ID Int
)
Insert Into #Tmp_A (GROUP_ID, ROUTE_ID)
Select 1,1
Union
Select 2,1
Union
Select 3,1
Insert Into #Tmp_B (GROUP_ID, PRCS_ID)
Select 1,4
Union
Select 2,5
Union
Select 3,6
Insert Into #Tmp_C (PRCS_ID, PARA_ID)
Select 4,7
Union
Select 5,8
Union
Select 6,9
--方法一
Select c.*
From #Tmp_A a
Inner Join #Tmp_B b On b.GROUP_ID = a.GROUP_ID
Inner Join #Tmp_C c On c.PRCS_ID = b.PRCS_ID
Where a.ROUTE_ID = 1
--方法二
Select c.*
From #Tmp_C c
Where Exists(
Select 1 From #Tmp_B b Where b.PRCS_ID = c.PRCS_ID And Exists(
Select 1 From #Tmp_A a Where a.GROUP_ID = b.GROUP_ID And a.ROUTE_ID = 1)
)