首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中的查询和子查询,向客户显示购买的产品

MySQL中的查询和子查询,向客户显示购买的产品
EN

Stack Overflow用户
提问于 2012-09-29 22:21:18
回答 1查看 407关注 0票数 0

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

嗯,我试了很多次了,但我做不到我想做的事,我需要显示一张顾客名单,上面列有购买过的顾客,例如,每次购买的产品中,大部分都是购买的。

客户编号1->购买:

  • 4份鸡汤
  • 3份肉汤
  • 2虾汤

客户编号2->购买:

  • 一份鸡汤
  • 1份肉汤
  • 2虾汤

客户编号3->购买:

  • 4份鸡汤
  • 8份肉汤
  • 1只虾汤

我的查询结果必须是:

请帮助我正确地进行mysql查询。

EN

回答 1

Stack Overflow用户

发布于 2012-09-29 23:05:10

我可以想出两种方法来解决这个问题。第一种方法是使用子选择来查询每个客户最受欢迎的项目:

代码语言:javascript
复制
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表来检索它的名称。

另一种方法是从一个查询开始,该查询将按受欢迎程度向您显示每个客户的所有项目:

代码语言:javascript
复制
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

然后,您可以创建此查询的聚合,以查找最受欢迎的项的计数,然后加入到其中,以找出该项是哪一项。这样做的缺点是每个客户可能返回多行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12657031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档