मैंने कुछ समय पहले एक्सेस/जेईटी एसक्यूएल में limitations of correlated subqueries के बारे में लिखा था, और SQL अद्यतनों के लिए एकाधिक तालिकाओं में शामिल होने के लिए वाक्यविन्यास पर ध्यान दिया। कि जानकारी और कुछ त्वरित परीक्षण के आधार पर, मैं वहाँ क्या आप एक ही एसक्यूएल अद्यतन बयान में प्रवेश/जेट के साथ चाहते हैं करने के लिए कोई रास्ता नहीं है विश्वास नहीं है। आप, बयान कुछ इस तरह पढ़ा जाएगा सकता है:
UPDATE FUNCTIONS A
INNER JOIN (
SELECT AA.Func_ID, Min(BB.Tax_Code) AS MinOfTax_Code
FROM TAX BB, FUNCTIONS AA
WHERE AA.Func_Pure<=BB.Tax_ToPrice AND AA.Func_Year= BB.Tax_Year
GROUP BY AA.Func_ID
) B
ON B.Func_ID = A.Func_ID
SET A.Func_TaxRef = B.MinOfTax_Code
वैकल्पिक रूप से, प्रवेश/जेट कभी कभी तो आपको एक अलग प्रश्न के रूप में एक सबक्वेरी बचत और फिर एक और अधिक परंपरागत में अद्यतन बयान में यह शामिल होने के साथ दूर होने देंगे मार्ग। तो, उदाहरण के लिए, अगर हम ऊपर का चयन करें सबक्वेरी बचाया FUNCTIONS_TAX नाम के एक अलग प्रश्न के रूप में, तो अद्यतन बयान होगा:
UPDATE FUNCTIONS
INNER JOIN FUNCTIONS_TAX
ON FUNCTIONS.Func_ID = FUNCTIONS_TAX.Func_ID
SET FUNCTIONS.Func_TaxRef = FUNCTIONS_TAX.MinOfTax_Code
बहरहाल, यह अभी भी काम नहीं करता है।
मेरा मानना है कि आप यह काम करने का एकमात्र तरीका न्यूनतम टैक्स_Cओड मूल्य आउट-ऑफ-बैंड के चयन और एकत्रीकरण को स्थानांतरित करना है। आप इसे एक वीबीए फ़ंक्शन के साथ कर सकते हैं, या एक्सेस DLookup फ़ंक्शन का उपयोग करके अधिक आसानी से कर सकते हैं। एक अलग क्वेरी नामित FUNCTIONS_TAX के लिए ऊपर सबक्वेरी द्वारा समूह को सहेजें और अद्यतन बयान को फिर से लिखने:
UPDATE FUNCTIONS
SET Func_TaxRef = DLookup(
"MinOfTax_Code",
"FUNCTIONS_TAX",
"Func_ID = '" & Func_ID & "'"
)
ध्यान दें कि DLookup फ़ंक्शन जेट OLEDB के माध्यम से उदाहरण के लिए पहुँच के बाहर किया जा रहा है, से इस क्वेरी से बचाता है। इसके अलावा, इस दृष्टिकोण का प्रदर्शन के आधार पर बहुत भयानक हो सकता है कि कितने पंक्तियों आप को लक्षित कर रहे के रूप में सबक्वेरी प्रत्येक कार्य पंक्ति (क्योंकि, ज़ाहिर है, यह अब जोड़ा जाता है, जो क्रम में पूरे मुद्दे है के लिए मार डाला जा रहा है इसके लिए काम करने के लिए)।
गुड लक!
आमतौर पर आप एक्सेस क्वेरी डिज़ाइनर में किसी बटन के क्लिक के साथ एक UPDATE क्वेरी में एक SELECT क्वेरी को चालू कर सकते हैं - जब आप SQL व्यू में नहीं हैं, तो कमांड बार में "क्वेरी टाइप" बटन होता है। इसे आज़माएं, यह किसी भी वाक्यविन्यास आवश्यकताओं का ख्याल रखता है। – Tomalak
आपकी टिप्पणी एक मजाक की तरह लगता है। – mammadalius
क्या आप इसके पीछे एक स्माइली देखते हैं? मैं मजाक टिप्पणियों को लिखने की आदत में नहीं हूं जो कई लाइनों का विस्तार करता है। – Tomalak