मेरे पास निम्न SQL स्ट्रिंग है जो FROM अनुभाग में एक बाएं जॉइन के साथ एक आंतरिक जॉइन को गठबंधन करने का प्रयास करती है।
जैसा कि आप देख सकते हैं कि मैं क्वेरी करने के लिए तालिका VIP_APP_VIP_SCENARIO_DETAIL_LE का उपयोग करता हूं। जब मैं इसे इस तालिका के विरुद्ध उपयोग करता हूं, तो एक्सेस मुझे "अमान्य ऑपरेशन" त्रुटि देता है।
दिलचस्प बात यह है कि जब मैं VIP_APP_VIP_SCENARIO_DETAIL_BUDGET या VIP_APP_VIP_SCENARIO_DETAIL_ACTUALS तालिका का उपयोग करके एक ही क्वेरी का उपयोग करता हूं, तो यह त्रुटिपूर्ण प्रदर्शन करता है।
तो यह दो टेबल पर क्यों काम करेगा लेकिन दूसरे पर नहीं? सभी फ़ील्ड सभी तालिकाओं में हैं और डेटा प्रकार सही हैं।
एक साइड नोट के रूप में: त्रुटि के साथ क्वेरी पर, अगर मैं लेफ्ट जॉइन को इनर जॉइन में बदल देता हूं, तो यह बिना किसी समस्या के चलता है! हालांकि मुझे वास्तव में बाएं जॉइन की आवश्यकता है।
SELECT
D.MATERIAL_NUMBER,
D.MATERIAL_DESCRIPTION,
D.PRODUCTION_LOT_SIZE,
D.STANDARDS_NAME,
D.WORK_CENTER,
S.OP_SHORT_TEXT,
S.OPERATION_CODE,
D.LINE_SPEED_UPM,
D.PERCENT_STD,
D.EQUIPMENT_SU,
D.EQUIPMENT_CU,
D.OPERATOR_NUM,
V.COSTING_LOT_SIZE,
V.VOL_TOTAL_ADJ
FROM
([STDS_SCENARIO: TEST] AS D INNER JOIN MASTER_SUMMARY AS S ON
D.MATERIAL_NUMBER = S.MATERIAL_NUMBER AND D.WORK_CENTER = S.WORK_CENTER)
LEFT JOIN
(SELECT ITEM_CODE, COSTING_LOT_SIZE, VOL_TOTAL_ADJ
FROM
VIP_APP_VIP_SCENARIO_DETAIL_LE
WHERE SCENARIO_ID = 16968) AS V ON D.MATERIAL_NUMBER = V.ITEM_CODE
ORDER BY D.MATERIAL_NUMBER, D.STANDARDS_NAME, S.OPERATION_CODE;
2 जवाब
एक दोस्त से मदद मिली और हमने पाया कि यह एक लिंक्ड ओरेकल टेबल और एक्सेस टेबल के बीच एक कास्टिंग समस्या थी। समस्या को ठीक करने के लिए हमने लिंक किए गए फ़ील्ड के दोनों किनारों को एक स्ट्रिंग में डाला:
सीएसटीआर(डी.[MATERIAL_NUMBER]) = सीएसटीआर(वी.[ITEM_CODE])
एसक्यूएल सर्वर में इसे अपने स्वयं के कुछ तालिकाओं के साथ नकल करने की कोशिश की, लेकिन संरचना काम करने लगती थी, यह ऊपर संदर्भित पैटर्न का पालन करती है। (उम्मीद है कि यहां कोई सिंटैक्स त्रुटियां नहीं बची हैं)
SELECT * FROM (
select
D.MATERIAL_NUMBER,
D.MATERIAL_DESCRIPTION,
D.PRODUCTION_LOT_SIZE,
D.STANDARDS_NAME,
D.WORK_CENTER,
S.OP_SHORT_TEXT,
S.OPERATION_CODE,
D.LINE_SPEED_UPM,
D.PERCENT_STD,
D.EQUIPMENT_SU,
D.EQUIPMENT_CU,
D.OPERATOR_NUM
FROM [STDS_SCENARIO: TEST] D
INNER JOIN MASTER_SUMMARY S
ON D.MATERIAL_NUMBER = S.MATERIAL_NUMBER AND D.WORK_CENTER = S.WORK_CENTER) AS J
LEFT JOIN
(SELECT ITEM_CODE, COSTING_LOT_SIZE, VOL_TOTAL_ADJ
FROM
VIP_APP_VIP_SCENARIO_DETAIL_LE
WHERE SCENARIO_ID = 16968) AS V ON J.MATERIAL_NUMBER = V.ITEM_CODE
ORDER BY J.MATERIAL_NUMBER, J.STANDARDS_NAME, J.OPERATION_CODE;
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।