我有这样的表
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
答案 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)
来确保它产生一个不会干扰总和的有效整数。