2017-05-10 48 views
2

表Stock更新的表,通過使用不同的表值

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本書離開了。

TABLE命令

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本書籍訂購併收到。因此,他們需要被添加到股票。 任何人都可以幫我添加訂購量的股票數量?

我使用的是甲骨文的SQLDeveloper

我使用以下試過,但它不工作:

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

看着你正在嘗試做的整個項目你也許也可以使用after update觸發器更新另一個表中的值。 – Tenzin

回答

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 
       ); 
+0

聲明奏效。謝謝。 –

+1

@JenniferBester請標記爲解決方案,如果它工作。 – tipura

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 
0

您也可以嘗試一個觸發器,它會在'received'列填充時自動插入庫存。 或簡單地使用與更新或合併語句進行連接來完成任務。

希望它有幫助!