【发布时间】:2023-03-05 17:54:01
【问题描述】:
我的 SQL 查询有问题。当我使用多个 JOIN 时,结果是错误的。
SELECT name, stock,SUM(order_items.qty),
SUM(shipping_items.qty) FROM shipping_items
JOIN mnm_products
ON mnm_products.id = shipping_items.product_id
JOIN order_items
ON mnm_products.id = order_items.product_id
GROUP BY mnm_products.id
当我只使用时
SELECT name, stock,
SUM(shipping_items.qty) FROM shipping_items
JOIN mnm_products
ON mnm_products.id = shipping_items.product_id
GROUP BY mnm_products.id
没错。但是当我使用 2 个连接时。两者的结果是一样的。 有人可以帮我吗?
【问题讨论】:
-
您的附加连接正在添加附加行——大概每个项目一个。这会乘以聚合的行数。一种解决方案是使用有效的查询预先聚合结果。
-
一般的 GROUP BY 规则说:如果指定了 GROUP BY 子句,则 SELECT 列表中的每个列引用必须要么标识一个分组列,要么是一个集合函数的参数!
-
好的,你能给我举个例子吗?它应该按产品 ID 分组
-
标准的方法是把选定的非参数列放到set函数中,然后把它们放在group by子句中。在这种情况下
GROUP BY name, stock.
标签: mysql sql join left-join right-join