如何创建查询谁将是表的总和或不是值

时间:2013-04-15 09:39:50

标签: sql doctrine

我有这样的表

Table1 
ID   Name  Value fk_table
1    edd   3      1 
2    tom   1      2
3    emi   2     NULL 

第二张表

Table2
ID VALUE
1   3
2   3

如果是外键,如何创建查询谁将是table1和table2的和值,或者如果不是fk则仅从table1输出值

return $this->getEntityManager()
                    ->createQuery('SELECT t1.name, SUM(t1.value as value +t2.value) 
                                   FROM AcmeBlogBundle:Table1 t1
                                   LEFT JOIN t1.table2 t2')
                    ->execute();

我想要这样的结果

edd 6
tom 5
emi 2

我使用doctrine和Symfony2

2 个答案:

答案 0 :(得分:1)

1 - 您尚未指定加入的条件

2 - SUM函数不能那样工作 - 它在整列上汇总,你只需要一个+

3 - 使用COALESCE确保将缺失值替换为0

SELECT T1.Name, COALESCE(T1.VALUE,0) + COALESCE(T2.VALUE,0) 
FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.fk_table = T2.ID

SQLFiddleDemo(例如SQL Server,但也可以与其他SQL风格一起使用)

答案 1 :(得分:0)

你的问题是NULL'将生命从一切事物中解脱出来'。将其添加到任何其他值会导致NULL。您应该使用COALESCE(t2.value, 0)来确保它产生一个不会干扰总和的有效整数。