如何从连接表中对[添加]多个列进行求和

时间:2014-03-17 19:47:57

标签: mysql

我需要编写一个连接多个表的查询,并在不同的表中总计几列。似乎无法弄明白该怎么做:

这是表格:

Contracts table

Contract Budgets

program names

我想要获得的结果是添加了特定预算名称的合同预算的结果:即[这不起作用但提出了一个想法]

select c.contract_budget_f1, c.contract_budget_f2, cb.budget_type_id, c.id, sum(cb.budget_f1) as bf1, sum(cb.budget_f2) as bf2
from `flow_contract` c 
left join `flow_contract_budget` cb on cb.contract_id = c.id
where c.program_id = '69'
group by cb.budget_type_id

整个结果集如下:

[budget_type_id]    
[contract_budget_f1]
[contract_budget_f2]
[bf1]
[bf2]

它将返回3行,并添加每种预算类型的预算 我怎么能这样做,甚至可能吗?

以下是表格的链接 - 抱歉,没有意识到你无法点击它们......

http://media.bigblockstudios.ca/stack/program-name.gif

http://media.bigblockstudios.ca/stack/contract-budget.gif

http://media.bigblockstudios.ca/stack/contracts.gif

更新

我得到了这样的工作:

    select c.id, c.program_id, c.contract_budget_f1, c.contract_budget_f2, cb.budget_f1, cb.budget_f2, cb.budget_type_id, c.id, 
sum(cb.budget_f1) as bf1, sum(cb.budget_f2) as bf2 
from `flow_contract` c 
left join `flow_contract_budget` cb on cb.contract_id = c.id 
where c.program_id = '".$formfields['program_id']."' 
group by cb.budget_type_id 
order by cb.budget_type_id

2 个答案:

答案 0 :(得分:1)

我认为你想要的是:

group by cb.budget_type_id, cb.contract_id

或者相反。你能成为一个小提琴吗?

答案 1 :(得分:1)

简答:子查询

试试这个: 从子查询开始。

  1. 编写一个查询,生成要求和的列值。现在是子查询。
  2. 编写一个outter查询,该查询对内部查询中的所需列进行求和。
  3. 让它运行后,查看它是否可以优化子查询并只有一个查询。