0

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

ORDER_ITEMS 表
ID
价格

订单表
ID
已经付款了

示例表数据将是:

ORDER_ITEMS
身份证价格
1 1.25
1 0.75

2 1.25
2 0.50
2 2.50

命令
id is_paid
1 0000-00-00
2 2013-02-27

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

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

太感谢了

4

2 回答 2

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

于 2013-02-27T19:47:51.783 回答
0

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

代码将是 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'

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

于 2013-02-27T20:37:12.143 回答