我有一个用于填充下拉列表的查询:
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/