Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pembaruan SQL Server dengan Inner Join

Dugaan saya adalah karena Anda telah menunjukkan kepada kami skema yang disederhanakan, beberapa info hilang yang akan menentukan mengapa nilai VarietyID berulang untuk ID Pesanan tertentu.

Saat Anda memiliki beberapa baris, SQL Server akan secara acak memilih salah satunya untuk pembaruan.

Jika demikian, Anda harus mengelompokkan terlebih dahulu

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  

Jika tidak, maka tabel OrderItems PK salah karena jika memungkinkan kombinasi OrderID/VarietyID duplikat (PK harus OrderID/VarietyID, atau ini harus dibatasi unik)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Apa perbedaan antara CROSS JOIN dan FULL OUTER JOIN?

  2. Isi Dataset Dengan Nama Tabel Dari Prosedur Tersimpan

  3. T-SQL Menghapus semua baris dari tabel ketika subquery salah format

  4. Bagaimana saya bisa mengatur identity_insert pada nama tabel yang diteruskan sebagai variabel

  5. cara mendapatkan hasil lengkap dari SSMS