2010-08-12 208 views
2

找到的所有產品的總價格我有(id,orderCode,productId,quantity,color,size) 表的訂單,我可以有這樣的條目:SQL Server查詢按訂單

1,O20100812,163,2,BLUE,Medium 
1,O20100812,163,3,BLUE,Larger 
1,O20100812,145,4,RED,Large etc 
1,O20100815,134,5,RED,Large etc 
1,O20100815,143,2,BLACK,Large etc 
1,O20100815,112,8,BLACK,Large etc 

而另一臺產品具有(id,name,price)

什麼我想要的是在orderCode 020100812的訂單中查找訂單中所有產品的總價格。我是否應該在選擇訂單代碼然後在加入產品表時合計數量?

回答

4

爲什麼你需要獨特?

Select SUM(o.Quantity * Price) TotalPrice 
FROM Orders o JOIN Products p ON (o.ProductId = p.Id) 
WHERE OrderCode = '020100812' 

對於所有的訂單,你可以使用下面的查詢:

Select OrderCode, SUM(o.Quantity * Price) TotalPrice 
FROM Orders o JOIN Products p ON (o.ProductId = p.Id) 
Group by OrderCode 
+0

我想我需要DISTINCT,因爲我可以有多個O20100812和多個O20100813和多個O20100816等 – chchrist 2010-08-12 09:07:17

+1

沒有你不需要指定不同的。 @邁克爾的回答是正確的。 – IsmailS 2010-08-12 09:11:08

+0

但我需要在html表中顯示orderCode和訂單的總價格。在哪裏我只會顯示020100812.我應該爲每個訂單查詢嗎? – chchrist 2010-08-12 09:13:53

1

沒有,GROUP BY然後你可以使用SUM整個集團,例如,彙總

select O.id, O.ordercode, sum(P.price * O.quantity) as total 
    from orders O 
    join products P on P.id = O.productid 
group by O.id, O.ordercode 

它會告訴你的總價格爲每個訂單內的每個順序碼 - 如果你在所有的訂單希望所有的訂購代碼你需要

select O.ordercode, sum(P.price * O.quantity) as total 
    from orders O 
    join products P on P.id = O.productid 
group by O.ordercode 

即不羣的順序ID。

(我猜O20100812只是一個例子,你真的想這對所有訂購號?)

+0

在另一個答覆的評論中證實,是的,每個訂單都需要它,而不僅僅是O20100812。 – 2017-08-27 15:36:09

+0

@Cœur,這就是我的答案,我想呢?很顯然,這是幾年前我寫的。 – Rup 2017-08-27 17:06:09

+0

是的,這就是你的答案。我只是確認你的訊問是一個正確的猜測。 – 2017-08-27 17:07:37