我有一个问题,这是我的简单图表:
relationship diagram http://i45.tinypic.com/121c48m.png
好吧,我尝试了很多而且我不能做我需要的东西,我需要显示已经购买的顾客列表,例如每次购买时购买的产品最多,
客户编号1 --->买入:
客户编号2 --->购买:
客户编号3 --->购买:
我的查询结果必须是:
query result http://i45.tinypic.com/2ni9w87.png
请帮我正确地进行这个mysql查询
答案 0 :(得分:1)
我可以想到两种方法。第一种是使用子选择来查询每个客户最受欢迎的项目:
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
然后,您可以创建此查询的聚合以查找最受欢迎项目的计数,然后联接回来查找该项目。这样做的缺点是每个客户可能会返回多行。