- 顧客ごとに 1 つの行を取得するには、customer_id でグループ化する必要があります。
- すべての注文を一覧表示できるようにするには、顧客から注文にリンクする必要があります。これは、注文が 0 件の顧客を含めるために、外部結合である必要があります。
- 顧客がこれまでに注文したすべてのアイテム SKU を一覧表示できるようにするには、ordered_items テーブルを介して items テーブルにリンクする必要があります。
group_concat
これらを 1 行にまとめるには、MySQL 関数も使用する必要があります。
そう:
select c.customer_id,
count(distinct o.order_id) distinct_orders,
group_concat(distinct i.sku) ordered_item_skus
from customers c
left outer join orders o on c.customer_id = o.customer_id
left outer join order_items oi on o.order_id = oi.order_id
left outer join items i on oi.item_id = i.item_id
group by c.customer_id