使用其他表

时间:2017-05-10 14:18:12

标签: sql oracle oracle-sqldeveloper

表格

INSERT INTO stock(stock_id, supplier_id, book_title, book_author, book_isbn, book_genre, stock_amount)  
VALUES(01,1101, 'Harry Potter', 'J.K.Rowling', '44-5678-234-8767', 'Young Adult', ***3***);

上面我已将数据插入到我的表中,其中只剩下3本书。

表格订单

INSERT INTO orders(order_num, emp_id, stock_id, supplier_id, supplier_name, book_title, book_author, order_date, order_amount, customer_contact, received)  
VALUES (1001 ,101 ,01 ,1101, 'Pengiun Books', 'Harry Potter', 'J.K. Rowling', '1-Mar-2017', ***10***, 0891234568,'***Y***');

订购并收到了7本以上的书籍。因此,他们需要添加到库存中。 任何人都可以帮助我将订购金额添加到库存量中吗?

我正在使用oracle-sqldeveloper

我尝试过使用以下内容,但它不起作用:

UPDATE stock   
    SET stock.stock_amount = stock_amount + orders.order_amount  
    WHERE stock.stock_id = orders.stock_id;

3 个答案:

答案 0 :(得分:1)

在Oracle中,您可以使用merge执行此操作。或者,您可以将子查询与update

一起使用
UPDATE stock s  
    SET stock_amount = s.stock_amount +
                       (SELECT sum(o.order_amount) 
                        FROM orders o
                        WHERE s.stock_id = o.stock_id
                       )
    WHERE EXISTS (SELECT 1
                  FROM orders o
                  WHERE s.stock_id = o.stock_id
                 );

答案 1 :(得分:0)

这将是t-sql中的解决方案。也许它可以帮助你。

UPDATE s
   SET stock_amount = stock_amount + o.order_amount  
FROM stock s
   INNER JOIN orders o ON o.stock_id = s.stock_id

答案 2 :(得分:0)

您还可以尝试触发器,当“已接收”列填充时,该触发器将自动插入库存。 或者只是使用带有更新或合并语句的连接来完成任务。

希望它有所帮助!!