Учитывая таблицу заказов и соответствующую таблицу элементов в этих заказах, мне нужно найти количество заказов с каждой возможной комбинацией SKU. Я делаю это в Magento, но это действительно просто вопрос SQL, поскольку я работаю непосредственно на уровне базы данных.Эффективный способ подсчета комбинаций записей с 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
, но я бы ike знать, есть ли способ сделать это, что более эффективно и/или работает без использования собственных функций. Вот что у меня есть:
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, проданных этим торговцем; однако он не масштабируется и, следовательно, не является обобщаемым, так что это частично то, что я ищу. – ScottSB