我有一个问题--这是我的简单图表:

嗯,我试了很多次了,但我做不到我想做的事,我需要显示一张顾客名单,上面列有购买过的顾客,例如,每次购买的产品中,大部分都是购买的。
客户编号1->购买:
客户编号2->购买:
客户编号3->购买:
我的查询结果必须是:

请帮助我正确地进行mysql查询。
发布于 2012-09-29 23:05:10
我可以想出两种方法来解决这个问题。第一种方法是使用子选择来查询每个客户最受欢迎的项目:
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然后,您可以创建此查询的聚合,以查找最受欢迎的项的计数,然后加入到其中,以找出该项是哪一项。这样做的缺点是每个客户可能返回多行。
https://stackoverflow.com/questions/12657031
复制相似问题