【发布时间】:2017-11-16 18:56:10
【问题描述】:
我有 2 个包含信息的表格:ID、persona_id、total_amount 角色 ID 可以重复数十次。所以我通过查询得到了所有一个人的 id total_amount:
select d.id as debt_id, p.name as persona, sum(d.total_amount) as total_amount
from debt d
join persons p on d.persona_id = p.id group by p.name
我想在一个查询中从每个表中获取数据,并使用 total_amount 列执行算术属性并将其作为 1 个表返回。
表 1
id persons_id total_amount
1 2 50
2 3 100
3 2 200
4 5 300
5 1 500
表 2
id persons_id total_amount
1 2 25
2 1 100
3 5 50
4 3 100
5 4 300
因此,我希望获得 2 个表,并结合总金额列的算术运算(-、+、/、*)。基本上进行更改以获得不同情况下我想要的形式的最终结果总金额。
根据 JohnHC answear 对我有用的是:
select c.id, c.persona_id, c.total_amount - d.total_amount as new_total
from ( select c.id , c.persona_id, sum(c.total_amount) as total_amount from credit c
join persons p on c.persona_id = p.id
group by p.name) c
inner join ( select d.id, d.persona_id, sum(d.total_amount) as total_amount from debt d
join persons p on d.persona_id = p.id
group by p.name) d
on c.persona_id = d.persona_id
group by c.id, c.persona_id
【问题讨论】:
-
我认为第一个问题应该是“为什么你有两个结构完全相同的表?”
-
@RiggsFolly 因为呈现的结构与查询不匹配,我将假设 OP “遗漏”了一些信息以“使其更容易”让我们阅读。我们甚至可能有 3 张不同的桌子。
-
我有 2 张结构完全相同的桌子,但一张桌子上存放着在地点 a 采摘的木材数量,而另一张桌子上存放着地点 b 的煤炭数量,但在两个地点从事这项工作的人可能相同.我的问题在于将信息分成 2 个表?