假设您有以下四个表格;
订单包含引用下订单的客户的外键(customer_id)。每个ordered_item包含引用整个订单的外键(order_id),以及引用items表的item_id。如何为每个客户编写一个返回单行的SQL查询,其中包含一个包含订单总数的列(包括0订单的任何客户),以及一个列表中的唯一商品SKU(items.sku)物品表?
答案 0 :(得分:3)
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