4

私は非常に単純なクエリを持っています:

SELECT a, b, a+b as c FROM records

これはうまく機能します。彼は結果の例です:

Array ( [a] => 100.92 [b] => 21.00 [c] => 121.92 )

しかし、年ごとにレコードをフィルタリングしようとすると、次のようになります。

SELECT a, b, a+b as c FROM records
WHERE YEAR(`mydate`) = '2011'

a+b の計算が消えます。

Array ( [a] => 100.92 [b] => 21.00 [c] => ) 

明らかな何かが欠けていますか?

アップデート:

  1. 私は実際の SQL を求められました。これは次のとおりです。

    FROM トランザクションの合計としてクレジット、デビット、クレジット + デビットを選択 WHERE YEAR( transaction_date) = '2011'

  2. transaction_date はDATEフィールド タイプです。

  3. また、貸方または借方フィールドは常にゼロです。

  4. PHP コード:

コード

include($_SERVER["DOCUMENT_ROOT"] . "/pool/_/db.php");

$sql = "SELECT credit, debit, credit+debit as total FROM transactions
            WHERE YEAR(`transaction_date`) = 2011";

$result = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_assoc($result)) {
        print_r($row);
}
4

1 に答える 1

3

私が考えることができる唯一のことは、creditor debitis NULL(not 0) のいずれかであり、これが total の値にもなるということNULLです。これを試して、何かが変わるかどうかを確認してください。

... COALESCE(credit, 0) + COALESCE(debit, 0) as total ...
于 2012-09-17T19:53:17.600 に答える