0

空またはデータベースにレコードが保存されていない場合でも、値を0に設定する選択クエリはありますか?

2 つの異なるテーブルから値を差し引こうとしているからです。しかし、問題は、テーブルの1つにデータが保存されていない場合、テーブルを減算できないことです。

これが私のコードです。両方のテーブルに値がある場合、このコードは減算できます。

SELECT  category,(SELECT SUM(s.total)-SUM(r.total)
    FROM rsales AS s WHERE r.pcode=s.pcode
) as total, 
r.pcode 

FROM rreturn AS r 

GROUP BY r.pcode;
4

3 に答える 3

2

IFNULLまたはを使用COALESCE:

SELECT IFNULL(SUM(s.total), 0)

SELECT COALESCE(SUM(s.total), 0)

expr1 がそうでない場合はNULL、それ以外の場合は を返しIFNULL()ます。 使用されるコンテキストに応じて、数値または文字列値を返します。expr1;expr2IFNULL()

于 2013-09-10T06:17:46.763 に答える
0

このようなものはうまくいくはずです

SUM(IF(s.total, s.total, 0))

また

SUM(IFNULL(s.total), 0))
于 2013-09-10T06:18:13.143 に答える
0

使用している構文は紛らわしく、エラーが発生しやすいものです。私は次のようなより単純なものに行きます:

SELECT category, SUM(s.total) - SUM(r.total) total
FROM rsales s
LEFT JOIN rreturn r USING (pcode)
GROUP BY s.pcode;

rreturnこれは、各 のレコードがない可能性があることを前提としていますpcode

于 2013-09-10T06:47:13.003 に答える