sql >> Database >  >> RDS >> Sqlserver

SQL Server-update met Inner Join

Mijn gok is dat omdat je ons een vereenvoudigd schema hebt getoond, er wat informatie ontbreekt die zou bepalen waarom de herhaalde VarietyID-waarden voor een bepaalde OrderID zijn.

Als u meerdere rijen heeft, kiest SQL Server willekeurig een van deze voor de update.

Als dit het geval is, moet u eerst groeperen

UPDATE V
SET
   Stock = Stock - foo.SumQuantity
FROM
    tblVariety V
    JOIN
    (SELECT SUM(Quantity) AS SumQuantity, VarietyID
     FROM tblOrderItem
      JOIN tblOrder ON tblOrderItem.OrderId = tblOrder.OrderId  
     WHERE tblOrder.OrderId = 1
     GROUP BY VarietyID
    ) foo ON V.VarietyId = foo.VarietyId  

Als dat niet het geval is, is de PK van de OrderItems-tabel verkeerd, omdat dubbele combinaties van OrderID/VarietyID zijn toegestaan ​​(de PK moet OrderID/VarietyID zijn, of deze moeten uniek zijn)



  1. Orderresultatenset op basis van WHERE IN-clausulegegevens

  2. Databasetabel bestaat niet volgens de Android Studio-compiler

  3. Databases:een logboek maken van acties, hoe om te gaan met verschillende referenties?

  4. 'PDOException' met bericht 'SQLSTATE[HY000] [2002] Geen route naar host