Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật máy chủ SQL với tham gia bên trong

Tôi đoán là vì bạn đã cho chúng tôi xem giản đồ đơn giản, nên thiếu một số thông tin có thể xác định lý do tại sao các giá trị VarietyID lặp lại cho một OrderID nhất định.

Khi bạn có nhiều hàng, SQL Server sẽ tùy ý chọn một trong số chúng để cập nhật.

Nếu đúng như vậy, trước tiên bạn cần phải nhóm

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  

Nếu không, thì PK trong bảng OrderItems là sai vì nếu cho phép các kết hợp OrderID / VarietyID trùng lặp (PK phải là OrderID / VarietyID, hoặc các kết hợp này phải là duy nhất)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối các chuỗi bằng đường dẫn xml

  2. Cài đặt và cấu hình SQL Server Log Shipping &Disaster Recovery -4

  3. sp_MSforeachdb:chỉ bao gồm kết quả từ cơ sở dữ liệu với kết quả

  4. Làm thế nào để kiểm tra kết quả công việc gói SSIS sau khi nó đã hoàn thành việc thực thi?

  5. ROW_NUMBER Thay thế cho SQL Server 2000