0

我有 4 个表,它们有两个共同的字段

total_share 和 idea_user_id

我写了一个 queru 来计算每个表的 total_share 的总和中的 total_income

这是我的查询

SELECT(
                         (SELECT SUM(total_share) FROM `idea_submitter_percentage` WHERE idea_user_id='3')
                           +
                         (SELECT SUM(total_share) FROM `idea_revisor_percentage` WHERE idea_user_id='3')
                           +
                         (SELECT SUM(total_share) FROM `idea_contributor_percentage` WHERE idea_user_id='3')
                            +
                         (SELECT SUM(total_share) FROM `idea_comparisor_percentage` WHERE idea_user_id='3')
                )
AS total_income

问题是,当我在每个 table 中至少有一行 idea_user_id='3' 时,它工作正常

但是如果我有一张表,其中没有基于idea_user_id ='3'的条目,那么它返回NULL,因此名为total_income的总金额返回我NULL

我怎么解决这个问题

4

2 回答 2

2

您可以coalesce()用来处理空值:

select coalesce(sum(...), 0) ...

或者您可以在外部查询中移动总和,并在子查询中坚持联合所有:

select sum(...)
from ( select ... from ...
       union all
       select ... from ...
       ... ) as sub
...

您还可以加入所有表格(juergen 的回答)。

于 2013-06-30T12:19:25.207 回答
0

这种类型的语法在 oracle 中有效......基本上,您需要一个外连接。

    SELECT NVL(SUM(total_share),0) 
FROM `idea_comparisor_percentage` 
WHERE idea_user_id (+) ='3'
于 2013-06-30T12:19:03.450 回答