【发布时间】:2016-09-27 05:23:22
【问题描述】:
我有以下疑问:
SELECT od.product_id, od.product_name, od.product_quantity, od.product_price,
o.id_address_delivery, a.id_country, a.id_state, s.name
FROM `ps_order_detail` od
LEFT JOIN ps_orders AS o ON od.`id_order` = o.`id_order`
LEFT JOIN `ps_address` AS a ON o.`id_address_delivery` = a.`id_address`
LEFT JOIN `ps_state` AS s ON a.id_state = s.id_state
ORDER BY o.`date_add` DESC
LIMIT 100;
它返回如下数据的地方:
product_id |产品名称 |产品数量 |产品价格 | id_state
我想知道每个州的畅销书(就数量而言)。例如:
状态 A :最畅销的是产品 A(已售出 500 件) 状态 B : 最畅销的是产品 C (150 售出数量) 状态 C : 最畅销的是产品 A (100 售出数量)
目前我正在考虑在 2 列之间进行 JOIN,但转念一想这需要类似“枢轴”的功能。
我知道如何获得每种产品的总销量
SELECT od.product_id, od.product_name, COUNT(od.product_id) AS 'total'
FROM `ps_order_detail` od
GROUP BY od.product_id
ORDER BY od.product_id DESC
LIMIT 100;
我也知道每个州的总销售量,但我不确定如何将两者结合起来以达到我的需要。我会很感激任何帮助。谢谢
【问题讨论】:
-
您的 group by 将在 5.7 中失败,
ONLY_FULL_GROUP_BY -
@Drew 如果启用了 ONLY_FULL_GROUP_BY,它将在所有 MySQL 版本中失败 :) 不同之处在于,在最近的 5.7 版本中,默认情况下启用了 ONLY_FULL_GROUP_BY,而在以前的版本中则没有。虽然 product_name 可能在功能上依赖于 product_id,所以即使启用了 ONLY_FULL_GROUP_BY,最新版本的 MySQL 甚至可能允许查询。
-
正确的@Shadow 开箱即用。当然它是可配置的。 5.7 毕竟不愿意让一个人朝自己的脚开枪
-
不,MySQL 只是不希望每个从 Teach Yourself PHP in 24 Hours 中学习 php / MySQL 的人的代码在迁移后崩溃:)
-
是的,我正在使用 mysql 5.7,实现这一目标的最佳方法是什么?或者这是应该在代码中完成的事情吗?
标签: mysql prestashop prestashop-1.5