मैं एक का चयन क्वेरी जो अनिवार्य रूप से एक क्षेत्र को पुन: फ़ॉर्मेट के लिए कुछ पाठ हेरफेर करता है का उपयोग करना चाहिए अगर मेरे पास "जे 1/2" जैसा फ़ील्ड है तो यह उचित फ़ील्ड में जे 1 और जे 2 के साथ एक अलग तालिका में रिकॉर्ड की आईडी देखता है।एमएस एक्सेस में एसक्यूएल अद्यतन संकट ऑपरेशन इतना है कि मैं इसे एक और तालिका में देख सकते हैं एक से अपडेट किए जाने क्वेरी
यह सब ठीक काम करता है।
अब मैं मूल तालिका को अपडेट करना चाहते तो मैं अब और इस स्ट्रिंग परिवर्तन का उपयोग कर लुकअप करने की जरूरत नहीं है, लेकिन अद्यतन प्रश्नों पर अपने प्रयासों के "ऑपरेशन एक से अपडेट किए जाने क्वेरी का उपयोग करना चाहिए"
कोई भी विचार के साथ समाप्त?
मेरे SELECT कथन:
SELECT DISTINCT
t1.DD,
t1.TN,
t1.DD & " J" & MID(t1.TN,2,1) AS CalculatedStart,
t1.DD & " J" & MID(t1.TN,4,1) AS CalculatedEnd,
t2.ID
FROM t1 INNER JOIN t2
ON (t1.DD & " J" & MID(t1.TN,2,1)=t2.StartLink)
AND (t1.DD & " J" & MID(t1.TN,4,1)=t2.EndLink)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";
याद - यह ठीक काम करता है और मैं दूसरे छोर बाहर आवश्यक t2.ID मिलता है।
UPDATE t1 SET t2ID = (
SELECT Query1.ID
FROM Query1
WHERE t1.DD=Query1.DD
AND t1.TN=Query1.TN
)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";
केवल इस विफल रहता है:
इसलिए मैं कुछ ऐसा करना चाहते हैं। यह एमएस एक्सेस के भीतर ही है, इसलिए मैं वास्तविक अनुमतियों की समस्या की कल्पना नहीं कर सकता क्योंकि अधिकांश "ऑपरेशन को अद्यतन करने योग्य क्वेरी का उपयोग करना चाहिए" समस्याएं प्रतीत होती हैं।
संपादित करें: काम करने वाले मामले को सरल बनाने की कोशिश कर रहा है।
इस अद्यतन क्वेरी ठीक है:
UPDATE t1
SET t2ID="Unknown"
WHERE TN LIKE "J?/?"
AND DD LIKE "M*";
यह एक विफल रहता है (धन्यवाद Goedke - इस उदाहरण स्पष्ट रूप से विफल रहता है क्योंकि सबक्वेरी 1 से अधिक परिणाम देता है मैं मेरी समस्या खोजने की कोशिश करने के लिए oversimplified था।)
UPDATE t1
SET t2ID=(SELECT ID FROM t2)
WHERE TN LIKE "J?/?"
AND DD LIKE "M*";
तो क्या मेरे पास बस मेरे सबक्वायरी वाक्यविन्यास को किसी तरह से गलत है?
संपादित करें: यह SELECT कथन भी ठीक है:
SELECT t1.OA, t1.DD, t1.TN, t1.HATRIS,
query1.DD, query1.TN, query1.ID
FROM t1 INNER JOIN query1
ON t1.DD=query1.DD
AND t1.TN=query1.TN
इसके अलावा, चुनिंदा बयान पर गिनती का उपयोग करके उपरोक्त से पता चलता है कि वहाँ वास्तव में 1 आईडी प्रति (डीडी, TN) संयोजन
संपादित लौटाए जाने :
अब मुझे सबसे आसान मामला मिल गया है - विभिन्न चयन कथनों का उपयोग करके अब मेरे पास केवल 2 कॉलम के साथ एक तालिका है - टी 1 की प्राथमिक कुंजी और वह मान जिसे मैं टी 1 में सम्मिलित करना चाहता हूं।
मैं अभी भी
UPDATE t1 SET t1.f2 = (SELECT t2.f2 FROM t2 WHERE t2.f1 = t1.f1)
लिखने के लिए जहां t1 के प्राथमिक कुंजी f1 है नहीं कर पा रहे। यहां तक कि जहां भी t1.f1 जोड़ते हैं (टी 2 से F1 चुनें) मदद नहीं करता है। (संभावना है कि सबक्वायरी 0 परिणाम देता है)
अपने प्रश्न का संपादित करें के बारे में क्षमा करें: मैं गलत संपादित करें बटन हिट:/ – Godeke
Btw, मैं अत्यधिक अपनी पीठ अंत के रूप में एसक्यूएल एक्सप्रेस की सिफारिश करेंगे। कारण मुझे इस समस्या का सामना नहीं करना है कि मैं हमेशा बैक एंड पर एक एसक्यूएल इंजन का उपयोग करता हूं, इससे कोई फर्क नहीं पड़ता कि परियोजना कितनी छोटी है ... एसक्यूएल एक्सेस इस मामले में स्पष्ट रूप से टूटा हुआ है। – Godeke
जेट एसक्यूएल बिल्कुल टूटा नहीं है। जेट एसक्यूएल में मानक SQL92 की तुलना में क्वेरी को अद्यतन करने योग्य बनाने के लिए अधिक विकल्प हैं। मेरा सुझाव है कि जेट-विनिर्देश DISTINCTROW भविष्यवाणी करने का प्रयास करें। यह अक्सर एक गैर-अद्यतन करने योग्य क्वेरी को अद्यतन करने के लिए मजबूर कर सकता है। –