ここでは o/r マッピングに iBatis を使用していますが、これは間違いなく純粋な SQL の問題です。完全なコンテキストを提供するために、iBatis についてのみ言及します。
私はテーブルを持っていますitems..fruits
:
fruit_id fruit_name fruit_color fruit_cost
=====================================================
1 apple red 12
2 pear brown 70
3 apple green 18
...
6485 banana yellow 30
6486 plum purple <null>
6487 kiwi green 85
注意してください:私の制御の及ばない理由により、fruit_cost
null可能です。
テーブル内のすべての果物のコストを (名前で) 合計する iBatis SQL クエリがあります。
SELECT
sum(item_cost) AS fruitSum
FROM
items..fruits
WHERE
fruit_name = #{value}#
ご覧のとおり、 に対してこのクエリを実行するapple
と、返さfruitSum
れる は 30 (12 + 18) になります。しかし、それを実行するとplum
NULL が返されます (実際、私の完全なコードではnet.sf.cglib.beans.BulkBeanException
s が返されますが、ここでは問題になりません)。
fruitSum
クエリが null になる場合に強制的にゼロ (0) になるようにクエリに振りかけることができる SQL マジックがあるかどうか疑問に思っています。したがって、次のようなものです。
SELECT
sum(item_cost) AS fruitSum DEFAULT 0
FROM
items..fruits
WHERE
fruit_name = #{value}#