首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过使用来自不同表的值来更新表

通过使用来自不同表的值来更新表
EN

Stack Overflow用户
提问于 2017-05-10 14:18:12
回答 3查看 47关注 0票数 2

表库存

代码语言:javascript
复制
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本书了。

表订购

代码语言:javascript
复制
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

我试过使用以下方法,但它不起作用:

代码语言:javascript
复制
UPDATE stock   
    SET stock.stock_amount = stock_amount + orders.order_amount  
    WHERE stock.stock_id = orders.stock_id;
EN

回答 3

Stack Overflow用户

发布于 2017-05-10 14:24:19

在Oracle中,您可以使用merge来完成这一任务。或者,您可以在update中使用子查询。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-05-10 14:27:55

这将是t的解决方案。也许它能帮到你。

代码语言:javascript
复制
UPDATE s
   SET stock_amount = stock_amount + o.order_amount  
FROM stock s
   INNER JOIN orders o ON o.stock_id = s.stock_id
票数 0
EN

Stack Overflow用户

发布于 2017-05-18 08:33:25

您还可以尝试一个触发器,该触发器将在填充“接收”列时自动插入到股票中。或者简单地使用join with update或merge语句来执行任务。

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43895170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档