मेरे पास निम्न 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;
1
JimT 13 जुलाई 2017, 23:04

2 जवाब

सबसे बढ़िया उत्तर

एक दोस्त से मदद मिली और हमने पाया कि यह एक लिंक्ड ओरेकल टेबल और एक्सेस टेबल के बीच एक कास्टिंग समस्या थी। समस्या को ठीक करने के लिए हमने लिंक किए गए फ़ील्ड के दोनों किनारों को एक स्ट्रिंग में डाला:

सीएसटीआर(डी.[MATERIAL_NUMBER]) = सीएसटीआर(वी.[ITEM_CODE])

0
JimT 14 जुलाई 2017, 21:20

एसक्यूएल सर्वर में इसे अपने स्वयं के कुछ तालिकाओं के साथ नकल करने की कोशिश की, लेकिन संरचना काम करने लगती थी, यह ऊपर संदर्भित पैटर्न का पालन करती है। (उम्मीद है कि यहां कोई सिंटैक्स त्रुटियां नहीं बची हैं)

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;
0
DudleyLumpkin 14 जुलाई 2017, 18:15