mysql - 在 mysql 中查找所有用户购买的所有单个项目
问题描述
我有三个表,例如客户、产品和采购。 购买:
id productId clientId amount
1 1 2 2500
2 2 3 3500
3 3 4 4500
4 6 1 5500
5 1 2 1500
6 3 3 2000
7 3 2 1000
客户:
id name
1 A
2 B
3 C
4 B
产品:
id product
1 Apple
2 Banana
3 Mango
6 Sweet
我可以查询这个
SELECT client.id, client.client_name, product.product, purchase.amount from client INNER JOIN purchase ON client.id=purchase.clientId INNER JOIN product ON product.id=purchase.productId GROUP BY client.id
我的输出是:
id client_name product amount
1 A Sweet 5500
2 B Apple 2500
3 c Mango 3500
4 D Banana 4500
但我想要输出,比如每个客户购买的数量在哪里
期望的输出:
id client_name Apple Banana Mango Sweet
1 A x x x x
2 B X x x x
3 c X x x x
4 D x x x x
我如何通过查询来做到这一点。谢谢
解决方案
如果您的产品有限,那么我将使用条件聚合:
SELECT c.id, c.client_name,
SUM(CASE WHEN pd.id = 1 THEN p.Amount ELSE 0 END) AS Apple,
SUM(CASE WHEN pd.id = 2 THEN p.Amount ELSE 0 END) AS Banana,
SUM(CASE WHEN pd.id = 3 THEN p.Amount ELSE 0 END) AS Mango,
SUM(CASE WHEN pd.id = 6 THEN p.Amount ELSE 0 END) AS Sweet
FROM client c INNER JOIN
purchase p
ON c.id = p.clientId INNER JOIN
product pd
ON pd.id = p.productId
GROUP BY c.id, c.client_name;
推荐阅读
- javascript - Angular 11 httpClient 顺序请求
- omnet++ - 如何获得其他 BSM 测量值
- azureml - AzureML ParallelRunStep 进度信息
- java - 如何让 java 程序从文件中只读取一行?
- docker - ansible中的jinja2拆分过滤器
- google-sheets - 每月平均时间公式不起作用
- unity3d - 统一游戏不能作为可执行文件运行
- javascript - 检查对象数组是否包含一个值
- git - 致命:无法创建工作树目录“SaloonApp。”:无效参数
- javascript - 如何使用 php 将表格中的数据显示到表单输入中(完整/准确描述向下)