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"
Ich habe versucht, diese Zeile hinzuzufügen, funktioniert aber nicht. WHERE prod_id = (SELECT sel_prod_id VON store_orders_items); – mosinskis
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. –