2017-02-18 5 views
0

Ich versuche einen Datensatz in der Tabelle StockCatalog mit der Bezeichnung Produktmenge zu aktualisieren, indem ich die Produktmenge zusammen mit dem Datensatz DeliveryQuantity in der Tabelle DeliveryContent hinzufüge, während innerlich zwei Datensätze verbunden sind, StockCatalog.StockID = DeliveryContent. Interne ID von StockID DeliveryContent.DeliveryID = Deliveries.DeliveryID. Bisher habe ich dies:Aktualisieren von Datensätzen durch Hinzufügen von Subabfragen in SQLite

UPDATE StockCatalog 
    SET ProductQuantity = (SELECT StockCatalog.ProductQuantity FROM StockCatalog INNER JOIN DeliveryContent on StockCatalog.StockID = DeliveryContent.StockID WHERE StockCatalog.ProductQuantity + DeliveryContent.DeliveryQuantity) 
    WHERE (SELECT DeliveryContent.DeliveryID FROM DeliveryContent INNER JOIN Deliveries on DeliveryContent.DeliveryID = Deliveries.DeliveryID) 

aber es scheint, dass diese aktualisiert alle ProductQuantity Datensätze in StockCatalog mit einem Datensatz von DeliveryQuantity in DeliveryContent. Entschuldigung Wenn das verwirrend ist.

+0

Bitte geben Sie einige Beispieldaten und Ihre gewünschte Ausgabe an. (Siehe [Wie formatieren Sie SQL-Tabellen in einem Stapelüberlauf Post?] (Http://meta.stackexchange.com/q/96125) für, wie Sie einige hinzufügen.) –

Antwort

1

Es scheint etwas Verwirrung über WHERE los zu sein. Ich denke, das ist das, was Sie wollen:

UPDATE StockCatalog sc SET ProductQuantity = ProductQuantity + 
(SELECT DeliveryQuantity FROM DeliveryContent WHERE StockID=sc.StockID) 
WHERE StockID in (select StockID from DeliveryContent); 

Wenn mehr als ein DeliveryContent kann für jeden StockID existieren, vielleicht sollten DeliveryQuantity durch SUM (DeliveryQuantity) ersetzt werden.

Verwandte Themen