从Sales表更新Inventory表

时间:2015-03-03 23:04:34

标签: sql oracle

嘿所有,所以我有2张桌子。

清单:

ITEMNAME | QUANTITY
---------|---------
ITEM A   |       200
ITEM B   |       310
ITEM C   |       255
ITEM D   |       115

销售:

SALENO | QUANTITY | ITEMNAME
-------|----------|---------
1001   |         5|   ITEM A
1002   |       100|   ITEM X
1003   |         1|   ITEM C
1004   |        20|   ITEM B

我遇到的问题是使用特定的SALENO更新我的库存QUANTITY值。

假设我已经将我的库存更新到SALENO 1002。

所以SALENO 1003& 1004是新销售,因此我只需要从我的库存量中减去这两个特定订单。我怎样才能做到这一点?

任何建议表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

要在Oracle中编写包含多个表的更新语句,您需要使用如下语法:

UPDATE Inventory SET 
Inventory.QUANTITY = Inventory.QUANTITY - (SELECT 
  Sales.QUANTITY
  FROM Sales 
  WHERE 
  Sales.ITEMNAME = Inventory.ITEMNAME AND
  Sales.SALENO IN (1003, 1004)
)
WHERE
(Inventory.ITEMNAME IN 
    (
      SELECT 
      s.ITEMNAME 
      FROM SALES s 
      WHERE 
      s.SALENO IN (1003, 1004)
    )
)

使用sql fiddle here

答案 1 :(得分:0)

以下工作可以吗?

UPDATE Inventory, Sales
SET Inventory.QUANTITY = Inventory.QUANTITY - Sales.QUANTITY
WHERE Inventory.ITEMNAME = Sales.ITEMNAME
   AND Sales.SALENO IN (1003, 1004)