2013-02-27 132 views
0

只有當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的價格字段的總和是多少。

太感謝你了

+0

爲了簡單和更好的性能,我建議你存儲'NULL'而不是'0000-00-00'。 – Slowcoder 2013-02-27 20:16:14

回答

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

0

如果你需要的所有訂單它們的總和不是'0000-00-00',從bluefeet的代碼中刪除「group by」

代碼將爲 選擇o.id,總和從訂單(oi.price)總 Ø 內加入ORDER_ITEMS OI 上o.id = oi.id 其中o.is_paid!= '0000-00-00'

如果你需要訂單ID明智的總和,bluefeet的代碼是正確的。

相關問題