2017-05-10 2 views
2

테이블 stock업데이트 내가 왼쪽에만 3 책이 내 테이블에 데이터를 삽입 한보다도 다른 테이블에서

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***); 

을 값을 사용하여 테이블.

테이블 ORDERS 7 책을 주문하고받은보다도

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***'); 

. 따라서 재고에 추가해야합니다. 주문한 금액을 재고량에 추가 할 수있는 사람이 있습니까?

나는 다음을 사용하려고했습니다

오라클 sqldeveloper

을 사용하고 있습니다,하지만 작동하지 않습니다

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

당신이하려고하는 전체 프로젝트를 살펴보면 다른 테이블의 값을 업데이트하기 위해 업데이트 후 트리거를 사용할 수도 있습니다. – Tenzin

답변

1

오라클에서 당신이 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

'수신'열이 채워지는대로 자동으로 삽입되는 트리거를 사용해 볼 수도 있습니다. 또는 작업을 수행하려면 update 또는 merge 문과 함께 조인을 사용하기 만하면됩니다.

희망이 있습니다!