1

我有三张桌子。我想更新具有列的TableC行Price=0

表 A

StoreId rate
1       100   
2       200

表B

ProductId StoreId
11           1
22           2
30           1
40           1
67           2

表C

ProductID Quantity Price
11           20     0
22           30     6000
30           100    0 
40           200    0
67           370    0

我想通过将 Quantity (从 Table C 获得)乘以由 TableB 链接的 Rate (从 TableA 获得)来更新 Price=0 的 TableC 行

现在,如果我必须更新 TableC 的单行,我的困惑是下面的方法将起作用

declare @rate int,declare @qty int

select @rate =rate , @qty=quantity
from tableA a
inner join tableB b
   on a.storeId=b.storeId
inner join tableC c
   on b.productId=c,productId
--where c.productId=somevalue --one row returned
-- where c.Price=0  -- returns multiple row -- update wont work
4

1 回答 1

2

TableC您可以通过加入TableBTableC在其上直接更新。

UPDATE  c
SET     c.Price = c.Quantity * a.Rate
FROM    TableC c
        INNER JOIN TableB b
            ON c.ProductID = b.ProductID
        INNER JOIN TableA a
            ON b.StoreID = a.StoreID
WHERE   c.Price = 0
于 2013-04-15T15:31:32.280 回答