Mysql 如何组合这三个查询?

Mysql 如何组合这三个查询?,mysql,join,left-join,Mysql,Join,Left Join,我需要使用连接将三个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=

我需要使用连接将三个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表连接的查询中,为每个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_值排序的所有用户ID。前面的三个查询分别运行,并使用单个用户标识进行参数化

进一步编辑:尝试了所有与用户查询相关联的union变体,我认为它不起作用。它非常接近于使用一些调整,但仍然返回不正确的值。我真的不知道它为什么会这样做。

可能类似于:

select sum(sum_value), user_id from (
select 
    sum(A.a) as sum_value, B.userID as user_id
from A join B 
on A.BID = B.id 
GROUP BY B.userID

UNION ALL

select 
    sum(C.c) as sum_value, D.userID as user_id
from D left join (C) 
on (D.id=C.DID)
GROUP BY D.userID

UNION ALL

select sum(E.e) as sum_value, E.userID as user_id from E
GROUP BY E.userID
)
GROUP BY user_id
可能是这样的:

select sum(sum_value), user_id from (
select 
    sum(A.a) as sum_value, B.userID as user_id
from A join B 
on A.BID = B.id 
GROUP BY B.userID

UNION ALL

select 
    sum(C.c) as sum_value, D.userID as user_id
from D left join (C) 
on (D.id=C.DID)
GROUP BY D.userID

UNION ALL

select sum(E.e) as sum_value, E.userID as user_id from E
GROUP BY E.userID
)
GROUP BY user_id

更新-在我的脑海中完成了它(太晚了,如果它不起作用,请对我放松:),仍然没有连接,但这将通过一个查询提供用户ID的总和。当然,你可以在最后抛出一个命令,以获得你想要的结果。不用担心,谢谢你的尝试。这和我刚才尝试的差不多,它返回的值不正确。不太清楚为什么。其中一个值的userID=37,每个子查询分别显示230、8和50。但在某些情况下,它显示为488。更新-是在我的脑海中完成的(现在太晚了,如果它不起作用,请对我放松:),仍然没有连接,但这将通过一个查询提供用户ID的总和。当然,你可以在最后抛出一个命令,以获得你想要的结果。不用担心,谢谢你的尝试。这和我刚才尝试的差不多,它返回的值不正确。不太清楚为什么。其中一个值的userID=37,每个子查询分别显示230、8和50。但在某些情况下,它显示为488。宾果!谢谢@CooL i3oY:)甚至不需要加入。。。完全是找错了方向。只剩下一件事,你可以不用加入就写出来。我相信这是提速。答对了!谢谢@CooL i3oY:)甚至不需要加入。。。完全是找错了方向。只剩下一件事,你可以不用加入就写出来。我认为这是提速。