php - MySQL的having子句和where子句

标签 php mysql

我有一个用于填充下拉列表的查询:

SELECT order_details.od_no, order_details.so_number, sales-order.status, sales-order.so-no, products.product_name 
FROM order_details 
LEFT JOIN sales-order ON order_details.so_number = sales-order.so-number 
LEFT JOIN products ON order_details.product_id = products.product_id 
WHERE order_details.so_number = '$sonum' AND sales-order.status != 'Canceled' 
HAVING SUM(po_prod_qty) < quantity

我已经研究过,聚合 SUM() 只能在 HAVING 子句中工作,如果我希望它像在 WHERE 子句中那样工作。但这个查询不起作用。我错过了什么吗?

最佳答案

如果您确实想使用 sum(),您可能缺少 group by 子句。在 having 中使用 sum() 创建一个聚合查询,该查询仅返回一行。如果这符合您的要求,您可能不需要聚合:

SELECT od.od_no, od.so_number, so.status, so.so-no, p.product_name 
FROM order_details od LEFT JOIN
     sales_order so
     ON od.so_number = so.so-number  LEFT JOIN
     products p
     ON od.product_id = p.product_id 
WHERE od.so_number = '$sonum' AND so.status <> 'Canceled' and po_prod_qty < quantity;

否则,在没有样本数据和期望结果的情况下,很难确切地说出你想要什么。

关于php - MySQL的having子句和where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24035699/

相关文章:

mysql - 查找数据库中的重复字段,并更新行中的字段

javascript - 单击功能在 laravel 上不起作用

java - 如何在linux中使用php中的java来监控文件

javascript - 使用 PHP 删除 MYSQL 中的表行

mysql - 将圆存储在 MySQL 地理空间数据库中

php - ini_set, set_time_limit, (max_execution_time) - 不工作

php - mysql搜索包含数组的列

php - 如何避免将我的 $registry 容器手动传递到我创建的每个新类的构造函数中?

javascript - jquery中通过循环获取值

php - For 循环仅发布数组的前 3 个元素 - PHP