sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server-uppdatering med Inner Join

Min gissning är att eftersom du har visat oss ett förenklat schema, saknas viss information som skulle avgöra varför de upprepade VarietyID-värdena för ett givet OrderID.

När du har flera rader väljer SQL Server godtyckligt en av dem för uppdateringen.

Om så är fallet måste du gruppera först

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  

Om inte, är OrderItems-tabellen PK fel eftersom den tillåter dubbletter av OrderID/VarietyID-kombinationer (PK:n bör vara OrderID/VarietyID, eller så bör dessa begränsas unika)



  1. Hur får man snyggt formaterade resultat från en Oracle-procedur som returnerar en referensmarkör?

  2. Varför skulle Oracle.ManagedDataAccess inte fungera när Oracle.DataAccess gör det?

  3. Var man lagrar uppladdade filer (ljud, bilder och video)

  4. För många beställ efter, max, underfrågor för mitt intellekt