繁体   English   中英

MySQL具有where子句的子句

[英]MySQL having clause with where clause

我有此查询,用于填充下拉列表:

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()仅在我希望它像WHERE子句中那样工作时才可以在HAVING子句中工作。 但是此查询不起作用。 我想念什么吗?

如果您确实想使用sum() ,则可能缺少group by子句。 使用的sum()having产生的聚集的查询,它返回只有一行。 如果这样做符合您的要求,则可能不需要聚合:

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;

否则,如果没有样本数据和所需结果,很难确切地说出您想要什么。

您必须选择相同的字段并使用group by子句

SELECT SUM(po_prod_qty) as prod_qty, ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM