php - 添加 WHERE YEAR 中断计算

标签 php mysql

我有一个非常简单的查询:

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,这里是:

    从交易中选择贷方、借方、贷方+借方作为总计 年份 (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);
}

最佳答案

我唯一能想到的是 creditdebitNULL(不是 0)反过来,也会使 total NULL 的值。试试这个,看看它是否改变了什么:

... COALESCE(credit, 0) + COALESCE(debit, 0) as total ...

关于php - 添加 WHERE YEAR 中断计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465390/

相关文章:

php - 两个 SQL 查询返回奇怪的结果

php - mysql在单个查询中进行多次计数

php - OOP 登录/注册

mySQL 密码策略拒绝所有创建用户的尝试

php - mysqli 返回具有相同 id 的多行数据

php - Android 上的 HTTP POST

php - 如何存储og meta标签信息?

mysql - 智能合并 MySQL 选择结果中的重复行

php - "Same"语法,使用mysqli fetch_assoc()有不同的结果?

php - Zencart 中的 session 问题