假设您有以下四个表;
- 顾客
- 订单
- 订购物品
- 项目
Orders 包含一个引用下订单的客户的外键 (customer_id)。每个ordered_item 包含一个引用整个订单的外键(order_id),以及一个引用items 表的item_id。您将如何编写为每个客户返回一行的单个 SQL 查询,其中包括一列,其中包含他们的订单总数(包括任何订单为 0 的客户),以及来自物品表?
group_concat
,以便能够将这些总结在一行中。所以:
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