2011-07-13 5 views
5

なぜ次の作業はありませんか?2つのSUMを追加する方法

SELECT SUM(startUserThreads.newForStartUser)+SUM(endUserThreads.newForEndUser) AS numNew ... 

空の文字列を返します。

次は、しかし設定私のデータのための1を返して:

SELECT SUM(startUserThreads.newForStartUser) AS numNew ... 

私が正しく2つの合計を追加するにはどうすればよいですか?

全部:FYI

SELECT t.*, 
     COUNT(startUserThreads.id) + COUNT(endUserThreads.id)      AS numThreads, 
     SUM(startUserThreads.newForStartUser) + SUM(endUserThreads.newForEndUser) AS numNew 
FROM `folder` `t` 
     LEFT OUTER JOIN `thread` `startUserThreads` 
     ON (`startUserThreads`.`startUserFolder_id` = `t`.`id`) 
     LEFT OUTER JOIN `thread` `endUserThreads` 
     ON (`endUserThreads`.`endUserFolder_id` = `t`.`id`) 
WHERE user_id = :user 

、唯一の2人のユーザが私のモデルでスレッドを共有することができます。それは私の列名のMySQLのドキュメントから

+0

クエリ全体を表示できますか? –

+0

どちらのクエリも有効ではありません。 –

+0

が全体のクエリを追加しました。どのように有効ではないのですか? – Jonah

答えて

6
SELECT COALESCE(SUM(startUserThreads.newForStartUser),0)+COALESCE(SUM(endUserThreads.newForEndUser),0) AS numNew ... 
+0

それは動作しますが、私はそれを得ることはできません..我々はCOALESCEに1つの議論しか与えませんか? – Jonah

+0

申し訳ありませんが、2番目の引数は0にする必要があります。 –

+0

ああ、整数に空の文字列を追加しようとしています。 – Jonah

1

SUMを説明する必要があります([DISTINCT] expr)は

はexprの合計を返します。戻り値セットに行がない場合、SUM()は を返します。 DISTINCTキーワードはMySQL 5.0でexprの別の値 だけを合計するために使用できます。

SUM()は、一致する行がない場合はNULLを返します。

COUNT()、MIN()、SUM()などの集計(集計)関数は、NULL値を無視します( )。例外は、行数をカウントするCOUNT(*)と、個々の列値ではない です。

多分、COALESCE(SUM(x)、0)+ COALESCE(SUM(y)、0)を試してみてください。

+2

私は合計がヌルを集計すると思った? – DForck42

関連する問題