2017-10-14 1 views
0

Ich habe folgende DB-Strukturaktualisieren subtrahieren Menge - SQL

Table product (die Informationen, die die Lager meine Produkte hält)

  • prod_id
  • prod_name
  • prod_desc
  • prod_price
  • Lager

Tisch store_orders_item (die jedes Mal, wenn ein Kunde aus der meiner Seite kauft aktualisiert wird)

  • id
  • ORDER_ID
  • sel_prod_id
  • sel_prod_price
  • sel_prod_qty

I brauche ich jedes Mal, wenn ich online einen Verkauf mache und store_orders_items ist Updates, die den Bestand Feld des Produkts auf dem Tisch ich den Code unten verwenden muß product

Ich denke, verkauft reduzieren, und eine Art von Verknüpfung oder Unterabfrage zu meinem Produkt Tabelle aktualisiert die prod_id nach, aber ich konnte nicht herausfinden, wie.

UPDATE product SET stock = stock - (SELECT SUM(sel_prod_qty) FROM store_orders_items); 

ich auch versucht:

UPDATE product 
SET stock = stock - (SELECT s.sel_prod_qty, s.sel_prod_id, p.prod_id 
FROM store_orders_items as s left join product as p ON 
s.sel_prod_id=p.prod_id WHERE order_id=(SELECT MAX(order_id) from orders_number)); 

Und habe diesen Fehler: "Sie sind nicht Zieltabelle 'Produkt' für die Aktualisierung in FROM-Klausel angeben können"

+0

Ich habe versucht, diese Zeile hinzuzufügen, funktioniert aber nicht. WHERE prod_id = (SELECT sel_prod_id VON store_orders_items); – mosinskis

+0

Dies ist der falsche Ansatz. Sobald Sie eine bestimmte Auftragsmenge vom Lagerbestand abgezogen haben - das war's. Wenn Sie also einen neuen Auftrag anlegen, erstellen Sie den neuen store_orders_items, und in einer anderen Anweisung subtrahieren Sie einfach den gleichen Betrag vom Bestand - NUR mit dem eingegebenen Betrag und nicht mit der Tabelle store_orders_items. –

Antwort

0

Sie müssen Updates verwenden beitreten zum Beispiel in MySQL:

UPDATE 
    product p 
INNER JOIN 
    store_orders_item s 
ON 
    p.prod_id = s.sel_prod_id 
SET 
    p.stock = p.stock - s.sel_prod_qty 
WHERE 
    s.order_id = NNNNN 

wo NNNNN ist die ID der gerade eingefügten Bestellung.

Verwandte Themen