1

注文のテーブルとそれらの注文に関連するアイテムのテーブルが与えられた場合、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;

これを行うより良い方法はありますか?

4

1 に答える 1