首页 > 解决方案 > 如何获取一个表的记录作为报告的其他表的列

问题描述

我有 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

描述

我想拥有购买和销售产品数量的用户列表。

每个用户在报告中都有一行。每个产品都有两栏,一栏是买的,一栏是卖的。

我的产品是有限的,所以我想为每个产品设置不同的栏(每个产品都有显示金额的购买和销售栏)

这可能吗?

如果有人帮助我,我将不胜感激。

标签: mysqlsql

解决方案


我想这样的事情应该有效。不确定您的产品有多么有限,但您必须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

推荐阅读