0

我有这样的桌子

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

我使用学说和 Symfony2

4

2 回答 2

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 风格一起正常工作)

于 2013-04-15T11:28:02.660 回答
0

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

于 2013-04-15T09:42:06.940 回答