【发布时间】:2011-03-30 00:31:54
【问题描述】:
我需要使用连接将三个 MySQL 查询组合成一个查询。不过,我在弄清楚如何做到这一点时遇到了很多麻烦。以下是三个查询。
select
sum(A.a)
from A join B
on A.BID = B.id
where B.userID=userID
select
sum(C.c)
from D left join (C)
on (D.id=C.DID)
where D.userID = userID
select sum(E.e) from E where E.userID=userID
我需要以某种方式将所有这些查询组合成一个与用户表连接的查询,以便为每个 user.id 提供sum(A.a)+sum(C.C)+sum(E.e)。我尝试了所有表的左连接
user left join (A, B, C, D, E)
on ((A.BID = B.id and B.userID=user.id)
or (D.id=C.DID and D.userID = user.id)
or (E.userID=user.id))
这几乎是在黑暗中拍摄的,并且失败了。我不知道如何组合这三个查询,有人给我提示吗?
编辑澄清:我需要这个查询是用户表与上述查询的连接,因为我需要能够选择按 sum_value 排序的所有用户 ID。之前的三个查询是单独运行的,并使用单个用户 ID 进行参数化。
进一步编辑:尝试了所有加入用户查询的联合变体,我认为它不起作用。它非常接近于进行一些调整,但它仍然返回不正确的值。我不太确定它为什么会这样做。
【问题讨论】: