मैं 3 टेबल है (सरलीकृत):एसक्यूएल सर्वर अद्यतन शामिल हों
tblOrder(OrderId INT)
tblVariety(VarietyId INT,Stock INT)
tblOrderItem(OrderId,VarietyId,Quantity INT)
अगर मैं कोई आदेश देने पर मैं स्टॉक स्तर इस का उपयोग कर ड्रॉप:
UPDATE tblVariety
SET tblVariety.Stock = tblVariety.Stock - tblOrderItem.Quantity
FROM tblVariety
INNER JOIN tblOrderItem ON tblVariety.VarietyId = tblOrderItem.VarietyId
INNER JOIN tblOrder ON tblOrderItem.OrderId = tblOrder.OrderId
WHERE tblOrder.OrderId = 1
सभी ठीक है, जब तक वहाँ एक ही ऑर्डर आईडी के लिए एक ही VarietyId के साथ tblOrderItem में दो पंक्तियां हैं। इस मामले में, स्टॉक अपडेट के लिए पंक्तियों में से केवल एक का उपयोग किया जाता है। ऐसा लगता है कि किसी भी तरह से VarietyId द्वारा ग्रुप कर रहा है।
क्या कोई भी कुछ प्रकाश डाल सकता है? बहुत धन्यवाद।
यह एक ही किस्म/आदेश संयोजन को शामिल करना असंभव हो सकता है? यही है, यदि एक ही विविधता एक आदेश के लिए> 1 दिखाई देती है, तो यह मात्रा पंक्ति में कब्जा कर लिया गया है, एकाधिक पंक्तियों में नहीं? – gbn
तकनीकी रूप से, हाँ। लेकिन tblOrderItem में अन्य कॉलम हैं जिसका अर्थ है कि एक से अधिक पंक्तियां उन मूलभूत संख्याओं के साथ जा सकती हैं (उदाहरण के लिए दिनांक फ़ील्ड) – Geoff