mysql - 如何获取一个表的记录作为报告的其他表的列
问题描述
我有 4 张桌子:
用户
ID | 姓名 |
---|---|
1 | 一个 |
2 | b |
产品
ID | 姓名 |
---|---|
1 | 交流电 |
2 | 公元前 |
买
ID | 用户身份 | product_id | 数量 |
---|---|---|---|
1 | 1 | 1 | 100 |
2 | 2 | 1 | 200 |
卖
ID | 用户身份 | product_id | 数量 |
---|---|---|---|
1 | 1 | 1 | 100 |
2 | 2 | 2 | 200 |
报告 现在我想查询以获取以下报告:
用户身份 | 用户名 | 买了_aC | 买了_bC | 出售的_aC | 已售出_bC |
---|---|---|---|---|---|
1 | 一个 | 100 | |||
2 | b | 100 | 200 |
描述
我想拥有购买和销售产品数量的用户列表。
每个用户在报告中都有一行。每个产品都有两栏,一栏是买的,一栏是卖的。
我的产品是有限的,所以我想为每个产品设置不同的栏(每个产品都有显示金额的购买和销售栏)
这可能吗?
如果有人帮助我,我将不胜感激。
解决方案
我想这样的事情应该有效。不确定您的产品有多么有限,但您必须case when
为每个产品添加声明。
select u.id, u.name,
case when pb.name = 'aC' then b.amount end as bought_aC,
case when pb.name = 'bC' then b.amount end as bought_bC,
case when ps.name = 'aC' then s.amount end as sold_aC,
case when ps.name = 'bC' then s.amount end as sold_bC
from users u
left join bought b on u.id = b.user_id
join products pb on b.product_id = pb.id
left join sold s on u.id = s.user_id
join products ps on s.product_id = ps.id
order by u.id
推荐阅读
- jquery - JSON响应太晚了
- android - 没有从 recyclerView 内的按钮调用 onClick 回调
- python - 从创建 HTTPStatus 对象中获取 linting 错误
- h2o - 如何使用 CURL 从命令行获取 H2O automl?
- ios - AWS Cognito 注册:错误 37
- assembly - DASM 指令/伪指令
- java - 我在android studio中打错了吗?
- android - 有效地循环遍历 Firebase 中的多个子节点
- android - Android - android-apt 插件与 Android Gradle 插件不兼容。
- javascript - javascript 仅显示带有 promise 对象的 for 循环的最后一次迭代的输出