SQL,查询条件是上次SQL查询的一组数据

katzel 2020-03-15 04:47:31
牛人啊!求帮助

语句一:select GROUP_ID from ROUTE_GROUP where ROUTE_ID =1,
执行会返回多个值,如1,2,3,然后我要根据返回的这多个值去查询另一张表
select PRCS_ID from PRCS where GROUP_ID =语句一的返回值,这是语句二,也会返回多个值,关键我还得根据这个返回值去查第三张表
select PARA_ID from PARA where PRCS_ID=语句二的返回值。
另外解释一下,物理模型上类似一个树型结构,建表的时候也是按这个来的

大概意思是这个,语句肯定不对,我该怎么弄啊?
...全文
206 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
morliz子轩 2020-03-16
  • 打赏
  • 举报
回复
用多表集查询结构。

--最终需要的结果值
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)
		)
Abby ????? 2020-03-15
  • 打赏
  • 举报
回复
select c.PARA_ID from PARA c left join PRCS b on c.RCS_ID = b.PRCS_ID left join ROUTE_GROUP a on b.GROUP_ID = a.GROUP_ID

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧