我有一个问题这是我的简单图表:
好吧,我尝试了很多,但我无法做我需要的事情,我需要显示已购买的客户列表,例如每次购买中购买的产品最多
客户编号 1 ---> 购买:
- 4鸡汤
- 3肉汤
- 2虾汤
2号客户--->购买:
- 1鸡汤
- 1肉汤
- 2虾汤
3号客户--->购买:
- 4鸡汤
- 8肉汤
- 1个虾汤
我的查询结果必须是:
请帮我正确地进行这个mysql查询
我可以想到两种方法。第一种是使用子选择来查询每个客户最热门的商品:
SELECT nameCustomer AS customer_name, (
SELECT idItem
FROM detailSale
INNER JOIN sales on sales.idDetail = detailSale.idDetail
WHERE sales.idCustomer = cliente.idCustomer
GROUP BY idItem
ORDER BY SUM(amountBuyItem) DESC
LIMIT 1
)
FROM cliente
请注意,此查询是不完整的,因为它只向您显示项目的 id,因此您需要加入 itemForSale 表以检索其名称。
另一种方法是从一个查询开始,该查询将按受欢迎程度向您显示每个客户的所有商品:
SELECT idCustomer, idItem, SUM(amountBuyItem) AS totalBuyItem
FROM detailSale
INNER JOIN sales on sales.idDetail = detailSale.idDetail
GROUP BY idCustomer, idItem
ORDER BY idCustomer, idItem DESC
然后,您可以创建此查询的聚合以查找最受欢迎项目的计数,然后再加入它以找出是哪个项目。这样做的缺点是可能为每位顾客返回多于一行。