我正在尝试使用可能构造错误的逻辑进行大型查询。
我有三个表,第一个表是要用于构造我的结果的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
如何构造查询以获得良好的结果?
答案 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
如果没有,如前所述,请向我们提供其他信息,例如样品,所需结果等。