【问题标题】:Getting data form 2 tables and summing values of the result从 2 个表中获取数据并对结果值求和
【发布时间】: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 个表?

标签: mysql sql


【解决方案1】:

如果您想要总数,请尝试:

select id, person_id, sum(total_amount)
from
(
select id, person_id, total_amount
from table1
union all
select id, person_id, total_amount
from table2
)
group by id, person_id

如果您想做其他事情,请尝试:

select t1.id, t1.person_id, t1.total_amount [+ - / *] t2.total_amount as new_total
from table1 t1
inner join table2 t2
on t1.id = t2.person_id
group by t1.id, t1.person_id

【讨论】:

  • 感谢您在玩了几分钟后的帮助,我设法得到了我想要的东西。我用帮助我以我想要的形式获取数据的解决方案更新了帖子。
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
相关资源
最近更新 更多