【发布时间】:2013-06-21 18:24:00
【问题描述】:
给定一张订单表和这些订单中的相关商品表,我需要找出每个可能的 SKU 组合的订单数量。我在 Magento 中执行此操作,但这实际上只是一个 SQL 问题,因为我直接在数据库级别工作。
以下是每个表格的相关部分:
sales_flat_order
| entity_id | int(10) unsigned | -- primary key
sales_flat_order_item
| order_id | int(10) unsigned | -- foreign key to order table's entity_id
| sku | varchar(255) |
我已经能够使用子查询和 MySQL GROUP_CONCAT 函数提取我想要的数据,但我想知道是否有一种更有效的方法和/或无需专有功能。这是我目前拥有的:
SELECT skulist, COUNT(skulist)
FROM (
SELECT GROUP_CONCAT(DISTINCT sku ORDER BY sku) skulist
FROM sales_flat_order orders
JOIN sales_flat_order_item items ON orders.entity_id = items.order_id
GROUP BY order_id
) skulists
GROUP BY skulist;
有没有更好的方法?
【问题讨论】:
-
这种 GROUP_CONCAT 方法是可行的,因为这个商家只销售了少数 SKU;但是,它不可扩展,因此不可泛化,所以这部分是我正在寻找的。span>