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

doctrine と 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 に答える