2013-04-15 22 views
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 

如何創建查詢誰將會從表1和值和table2如果是外鍵,或者將只輸出來自table1的值,如果不是fk

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的

回答

1

1 - 您還沒有指定要加入的條件

2 - SUM函數不一樣的工作 - 它總結匯總於整列,你只需要一個+

3 - 使用聚結以確保缺失值替換爲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口味)

0

您的問題是NULL「跳越生活了一切」。將它添加到任何其他值將導致NULL。您應該使用COALESCE(t2.value, 0)以確保它會生成一個不影響總和的有效整數。

相關問題