如何避免在这种情况下使用子查询访问SQL
嗨,我遇到了这样一种情况,我需要连接两个表,但要从第三个表中筛选值。详情如下:如何避免在这种情况下使用子查询访问SQL,sql,ms-access-2007,Sql,Ms Access 2007,嗨,我遇到了这样一种情况,我需要连接两个表,但要从第三个表中筛选值。详情如下: SELECT a.Key , (SELECT SUM(B.hours) FROM tableB as B INNER JOIN tableC as C ON B.List=C.List WHERE C.Status = 'Approved' AND B.Key LIKE A.key) , (SELECT SUM(B
SELECT a.Key , (SELECT SUM(B.hours) FROM tableB as B
INNER JOIN tableC as C ON B.List=C.List
WHERE C.Status = 'Approved' AND B.Key LIKE A.key) ,
(SELECT SUM(B.hours) FROM tableB as B
INNER JOIN tableC as C ON B.List=C.List
WHERE C.Status = 'Pending' AND B.Key LIKE A.key)
FROM tableA as A GROUP BY A.key
有没有其他不使用相关子查询的方法?我想使用联接,但我不知道如何将表C链接到这张图片中
提前谢谢 子查询可能不是一个坏主意,但您可以通过条件聚合实现这一点:
SELECT a.Key,
sum(iif(c.Status = "Approved", B.hours, 0)),
sum(iif(c.Status = "Pending", B.hours, 0))
FROM tableA as A left join
(tableB as b inner join
tableC as c
on b.list = c.list
)
on b.key like a.key
GROUP BY A.key;
MS Access对连接有着神秘的语法,特别是对于多个连接。我认为上面的说法是正确的。谢谢Gordon,我不知道Access允许将子表与子表连接起来。ie我认为Access只允许表A连接表B和表连接表C。不喜欢你的答案表A连接表B,然后在里面(表B连接表C)。我现在就去试试,然后再给你打电话。@Tyrion。访问确实允许它。我只是不确定我的访问语法是否正确。我倾向于避免访问,更喜欢其他数据库的免费版本。括号让我头疼,尤其是当我不得不加入其他表时。但是成功了!。非常感谢你。