आपका दूसरा प्रयास काम नहीं करता क्योंकि, पुस्तकों की ऑन-लाइन प्रविष्टि के आधार पर अद्यतन के लिए
, SQL CE FROM
. की अनुमति नहीं देता है अपडेट स्टेटमेंट में क्लॉज।
मेरे पास इसका परीक्षण करने के लिए SQL कॉम्पैक्ट संस्करण नहीं है, लेकिन यह काम कर सकता है:
UPDATE JOBMAKE
SET WIP_STATUS = '10sched1'
WHERE EXISTS (SELECT 1
FROM JOBVISIT AS JV
WHERE JV.JBT_TYPE = JOBMAKE.JBT_TYPE
AND JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER
AND JV.JVST_ID = @jvst_id
)
यह हो सकता है कि आप क्वेरी को थोड़ा छोटा करने के लिए JOBMAKE को JM के रूप में उपनाम कर सकते हैं।
संपादित करें
मैं एसक्यूएल सीई की सीमाओं के बारे में 100% निश्चित नहीं हूं क्योंकि वे टिप्पणियों में उठाए गए प्रश्न से संबंधित हैं (जॉबविसिट से मूल्य का उपयोग करके जॉबमेक में एक मूल्य कैसे अपडेट करें)। बाहरी क्वेरी में EXISTS क्लॉज की सामग्री को संदर्भित करने का प्रयास मेरे द्वारा देखी गई किसी भी SQL बोली में असमर्थित है, लेकिन एक और तरीका है जिसे आप आज़मा सकते हैं। यह परीक्षण नहीं किया गया है, लेकिन काम कर सकता है, क्योंकि ऐसा लगता है कि SQL CE सहसंबद्ध उपश्रेणियों का समर्थन करता है:
UPDATE JOBMAKE
SET WIP_STATUS = (SELECT JV.RES_CODE
FROM JOBVISIT AS JV
WHERE JV.JBT_TYPE = JOBMAKE.JBT_TYPE
AND JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER
AND JV.JVST_ID = 20
)
हालाँकि, एक सीमा है। यह क्वेरी विफल हो जाएगी यदि JOBMAKE में प्रत्येक पंक्ति के लिए JOBVISIT में एक से अधिक पंक्ति को फिर से ट्यून किया गया है। यदि यह काम नहीं करता है (या आप आंतरिक क्वेरी को प्रति बाहरी पंक्ति में एक पंक्ति तक सीधे सीमित नहीं कर सकते हैं), तो इसे पूरा करना संभव होगा कर्सर का उपयोग करके पंक्ति-दर-पंक्ति अद्यतन।