php - 不限制 where 语句

标签 php mysql

我的帐户具有与其关联的类别和订单表,其中订单可以是基于“order_type”字段的债务或信用,以及一个存储付款日期和金额的付款表(债务没有使用负数)或学分)。

目前我正在使用这样的东西:

SELECT cat, SUM(p.amount) balance
FROM accounts a 
LEFT JOIN orders o ON a.id = o.account_id
LEFT JOIN payments p ON o.id = p.order_id
WHERE YEAR(p.date) = 2012
GROUP BY a.cat

第一期:

这会将所有资金视为已缴纳的资金,这是错误的,我尝试过使用

sum(IF(o.order_type = 1, p.amount, p.amount * -1 ))

未能给我正确的结果,因为所有金额均为负数。

第二期:

它不会显示未付款的类别,这里的限制因素是我需要确保仅计算 2012 年付款的日期,但如果没有付款,我还想显示所有带有零的类别制作。

我的处理方式是错误的吗?

如果有人知道其中一个问题或两个问题的解决方案,请提供您的解决方案。

最佳答案

SELECT cat, SUM(p.amount) balance
FROM accounts a 
LEFT JOIN orders o
  ON a.id = o.account_id
     AND o.order_type = 1
LEFT JOIN payments p
  ON o.id = p.order_id
     AND YEAR(p.date) = 2012
GROUP BY a.cat

年份检查必须是 JOIN 条件,而不是 WHERE,因此不会排除没有付款的类别。

关于php - 不限制 where 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14322410/

相关文章:

php - 使用 PHP 更新特定列时的 MySQL 时间戳

当我运行MySQL时出现错误

php - 呼应欧元符号

php - 警告 : getimagesize() [function. getimagesize] : Filename cannot be empty warning message?

mysql - max_allowed_pa​​cket 正在重置为 1024,因为某些未知应用程序

python - 如何加载预先存在的数据flask-sqlalchemy

php - 调试 LAMP/CakePHP 站点内存泄漏?

php - 当我将其设置为不显示时,数据库仍然显示较旧的条目

php - 如果使用php数据库中没有值,如何显示第一次零值?

javascript - 提高聊天应用程序的性能