注文のテーブルとそれらの注文に関連するアイテムのテーブルが与えられた場合、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) |
サブクエリと MySQLGROUP_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;
これを行うより良い方法はありますか?