根据另一个表字段SUM一个表字段

时间:2013-02-27 19:45:34

标签: mysql sum

仅当ORDER表的匹配is_paid字段不是0000-00-00时,我才需要汇总ORDER_ITEMS表中的所有价格字段。

ORDER_ITEMS table
id
price

ORDER table
id
is_paid

示例表数据将是:

ORDER_ITEMS
id   price
1    1.25
1    0.75

2    1.25
2    0.50
2    2.50

ORDER
id   is_paid
1    0000-00-00
2    2013-02-27

所以上面的数据会返回: id:2 总和:4.25

因为id 1没有支付(因此不关心价格的总和是多少)而且id 2已经支付,所以我们关心id 2的价格字段的总和。

非常感谢你

2 个答案:

答案 0 :(得分:1)

您只需使用sum()汇总功能和GROUP BY每个订单ID:

select o.id, sum(oi.price) Total
from orders o
inner join ORDER_ITEMS oi
  on o.id = oi.id
where o.is_paid != '0000-00-00'
group by o.id

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

如果您需要所有不是'0000-00-00'的订单的总和,请从bluefeet的代码中删除“group by”

代码将是 选择o.id,sum(oi.price)总计 来自订单o 内连接ORDER_ITEMS oi   在o.id = oi.id 其中o.is_paid!='0000-00-00'

如果您需要订单ID明智的总和,bluefeet的代码是正确的。