2017-05-10 14 views
2

Tabelle STOCKaktualisiert eine Tabelle, nach Wert aus einer anderen Tabelle mit

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

Above-I-Daten in meine Tabelle eingefügt habe, wo es nur 3 übrig Bücher.

Tabelle ORDERS

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

Above 7 Bücher bestellt wurden und empfangen werden. Daher müssen sie dem Bestand hinzugefügt werden. Kann mir jemand helfen, die bestellte Menge der Menge auf Lager hinzuzufügen?

Ich bin mit Oracle-sqldeveloper

Ich habe versucht, die folgenden verwenden, aber es funktioniert nicht:

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

Mit Blick auf das gesamte Projekt, das Sie versuchen, könnten Sie möglicherweise auch einen After-Update-Trigger verwenden, um einen Wert in einer anderen Tabelle zu aktualisieren. – Tenzin

Antwort

1

In Oracle Sie diese merge mit tun können. Alternativ können Sie Subqueries mit update verwenden:

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

Die Aussage funktionierte. Danke. –

+1

@JenniferBester Bitte markieren Sie es als Lösung, wenn es funktioniert hat. – tipura

0

Dies würde die Lösung in T-SQL sein. Vielleicht kann es dir helfen.

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

Sie auch einen Trigger versuchen können, die automatisch in den Bestand einfügen wird als die Spalte ‚erhalten‘ bevölkert wird. oder verwenden Sie einfach den Join mit update oder merge Anweisungen, um die Aufgabe zu erledigen.

Hoffe es hilft !!

Verwandte Themen