【问题标题】:How to count grouped records that match multiple criteria如何计算匹配多个条件的分组记录
【发布时间】:2021-09-22 04:27:43
【问题描述】:

我有三张桌子

表 1;包含产品名称、产品 ID、产品价格的产品表

表 2;使用 store_id、store_name 存储表

表 3;带有 id、store_id、product_id、sock、min_stock 的库存表

我需要将每个产品的库存合计为 total_stock,并将每个产品的 min_stock 合计为 total_min_stock。 然后我应该将 total_stock 值小于 total_min_stock 的产品数量计算为 low_stock_number 并回显 low_stock_number 的值

【问题讨论】:

  • 您应该首先尝试自己实现它,然后在遇到问题时提出具体问题。展示您的第一个实现,然后您更有可能获得一些评论或建议。我的建议 - 尝试表达 SQL 以获得至少可处理的结果 - 使用 PHP 处理结果并将其呈现给用户。
  • 请提供样本数据和期望的结果。

标签: mysql sql


【解决方案1】:

假设每个表的唯一值是它的 id,你需要的是 aum 和 group by,使用 HAVING 来调节 GROUPed 结果

SELECT
 p.product_id,
 SUM(IFNULL(st.stock,0) as total_stock,
 SUM(IFNULL(st.min_stock,0) as total_min_stock
FROM
 product p
 LEFT JOIN stock st ON st.product_id = st.product_id
GROUP BY
 p.product_id
HAVING
  total_stock < total_min_stock

【讨论】:

  • 错过输入别名,在所有情况下都应该是 st 而不是 sr。谢谢
猜你喜欢
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2013-03-01
  • 2021-06-15
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多