2014-11-13 104 views
1
從子表項

比方說,我有表orders如何總結在SQL

id  name 
1  order1 
2  order2 
3  order3 

和子表items

id parent amount price 
1  1  1   10 
2  1  3   20 
3  2  2   5 
4  2  5   1 

我想用以便與添加的列value創建查詢。它應該計算順序與所有相關的項目

id  name  value 
1  order1 70 
2  order2 15 
3  order3 0 

這可能與TSQL

回答

2

GROUP BYSUM會做到這一點,需要使用left joinisnull,你不必對所有的訂單項目。

SELECT o.id, o.name, isnull(sum(i.amount*i.price),0) as value 
    FROM orders o 
    left join items i 
    on o.id = i.parent 
    group by o.id, o.name 
0

我認爲你在尋找這樣的事情

SELECT o.name, i.Value FROM orders o WITH (NOLOCK) 
LEFT JOIN (SELECT parent, SUM(price) AS Value FROM items WITH (NOLOCK) GROUP BY parent) i 
ON o.id = i.parent 

...好像RADAR打我的答案。 編輯:缺少在線。