第一个表上的SQL Multiple Join

时间:2018-08-14 12:14:31

标签: sql-server tsql

我正在尝试使用可能构造错误的逻辑进行大型查询。

我有三个表,第一个表是要用于构造我的结果的userId列表,

第二张表是任务列表,我需要使用userId equalty语句将该表链接到第一张表(first.userId = second.userId)

第三个是其他任务列表,我想用一个额外的语句(first.isResp = 1)来执行相同的语句(first.userId = third.userId)

First
-----
userId PK
isResp (bit) 

Second 
------
taskId PK
userId
value

third
-----
taskId PK
userId
value

如何构造查询以获得良好的结果?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用内部联接,并且此答案完全基于假设

select a.userid,a.isResp,b.taskId,c.value from first a inner join second b
on a.userid=b.userid inner join third c
on b.userid=c.userid and b.taskid=c.taskid

答案 1 :(得分:0)

由于我看不到Second和Third之间的任何逻辑关系(我猜这两者都是First的一对多),所以我猜测您正在寻求合并两个结果集。以下是您在寻找什么?

SELECT   F.userId, S.taskId, 'Tasks of Second' AS Origin, S.Value
FROM     First AS F
 JOIN    Second AS S
  ON     F.userId = S.userId

UNION ALL

SELECT   F.userId, T.taskId, 'Tasks of Third' AS Origin, T.Value 
FROM     First AS F
 JOIN    Third AS T
  ON     F.userId = T.userId
WHERE    F.isResp = 1

如果没有,如前所述,请向我们提供其他信息,例如样品,所需结果等。