Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

इनर जॉइन के साथ SQL सर्वर अपडेट

मेरा अनुमान है कि चूंकि आपने हमें सरलीकृत स्कीमा दिखाया है, इसलिए कुछ जानकारी गायब है जो यह निर्धारित करेगी कि किसी दिए गए ऑर्डर आईडी के लिए बार-बार VarietyID मान क्यों हैं।

जब आपके पास एक से अधिक पंक्तियाँ हों, तो SQL सर्वर मनमाने ढंग से उनमें से एक को अपडेट के लिए चुन लेगा।

अगर ऐसा है, तो आपको पहले समूह बनाना होगा

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  

यदि नहीं, तो ऑर्डरइटम तालिका पीके गलत है क्योंकि यदि डुप्लिकेट ऑर्डरआईडी/वैराइटीआईडी ​​संयोजनों की अनुमति देता है (पीके ऑर्डरआईडी/वैराइटीआईडी ​​होना चाहिए, या इन्हें अद्वितीय बाध्य किया जाना चाहिए)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pyodbc - बहुत धीमी बल्क इंसर्ट गति

  2. सभी विदेशी कुंजी बाधाओं को अस्थायी रूप से अक्षम करें

  3. एसक्यूएल:स्ट्रिंग में अंतिम अल्पविराम हटा दें

  4. SQL सर्वर में स्ट्रिंग्स को जोड़ने के लिए GROUP BY का उपयोग कैसे करें?

  5. SQL सर्वर:IN ('asd') कॉलम NTEXT होने पर काम नहीं कर रहा है