加入3个子查询

时间:2013-12-19 16:46:55

标签: mysql sql join discrete-mathematics

我需要一些帮助才能创建此查询。我正在加入TableATableB并从中获取价值;然后加入TableATableC并获取值。最后,我减去了两个值。

我不确定如何使用大量JOIN在单个查询中编写此内容,或者如果我只做2个子查询然后减去它们。

到目前为止,我有类似的内容:

SELECT SUM(A.quantity) From TableA JOIN Table B WHERE ...

然后

SELECT SUM(A.quantity) From TableA JOIN Table C WHERE ...

考虑到TableATableB可能没有结果的可能性,但是TableATableC没有结果,或者反之,或者两者都有,或者两者都不会,我不能只是JOIN TableATableB以及TableC

1 个答案:

答案 0 :(得分:0)

您可以使用cross join

执行此操作
select coalesce(s1.q1, 0) - coalesce(s2.q2, 0)
from (SELECT SUM(A.quantity) as q1 From TableA JOIN Table B WHERE ...) s1 cross join
     (SELECT SUM(A.quantity) as q2 From TableA JOIN Table C WHERE ...) s2;

如果其中一个结果集返回NULL,则coalesce()会将该值视为0