नौसिखिया ओरेकल अद्यतन बयान त्रुटि

वोट
9

ओरेकल क्वेरी:

UPDATE AIRMODEL_NETWORK_SUMMARY 
SET CASES_PRODUCED = (SELECT DISTINCT PRDCTN_RUN_ACTL_CASE_QTY
                       FROM AIRMODEL_NETWORK_SUMMARY, HISTORY_PRODUCTION, PERIOD_TO_PROCESS
                      WHERE AIRMODEL_NETWORK_SUMMARY.FSCL_WK_IN_YR_NUM = HISTORY_PRODUCTION.FSCL_WK_IN_YR_NUM 
                        AND AIRMODEL_NETWORK_SUMMARY.FSCL_YR_NUM = HISTORY_PRODUCTION.FSCL_YR_NUM 
                        AND AIRMODEL_NETWORK_SUMMARY.LOC_ID = HISTORY_PRODUCTION.LOC_ID 
                        AND HISTORY_PRODUCTION.FSCL_WK_IN_YR_NUM = PERIOD_TO_PROCESS.FSCL_WK_IN_YR_NUM 
                        AND HISTORY_PRODUCTION.FSCL_YR_NUM = PERIOD_TO_PROCESS.FSCL_YR_NUM);

निम्न त्रुटि लौट रहा है:

ORA-01427: एकल पंक्ति सबक्वेरी एक से अधिक पंक्तियां रिटर्न

सुधार पर एक और प्रयास:

 MERGE INTO AIRMODEL_NETWORK_SUMMARY AIRMODEL_NETWORK_SUMMARY1 
  USING (SELECT DISTINCT PRDCTN_RUN_ACTL_CASE_QTY, 
           AIRMODEL_NETWORK_SUMMARY2.rowid AS r 
      FROM AIRMODEL_NETWORK_SUMMARY AIRMODEL_NETWORK_SUMMARY2 
           INNER JOIN HISTORY_PRODUCTION 
              ON AIRMODEL_NETWORK_SUMMARY2.FSCL_WK_IN_YR_NUM = HISTORY_PRODUCTION.FSCL_WK_IN_YR_NUM 
                 AND AIRMODEL_NETWORK_SUMMARY2.FSCL_YR_NUM = HISTORY_PRODUCTION.FSCL_YR_NUM 
                 AND AIRMODEL_NETWORK_SUMMARY2.LOC_ID = HISTORY_PRODUCTION.LOC_ID 
           INNER JOIN PERIOD_TO_PROCESS 
              ON HISTORY_PRODUCTION.FSCL_WK_IN_YR_NUM = PERIOD_TO_PROCESS.FSCL_WK_IN_YR_NUM 
                 AND HISTORY_PRODUCTION.FSCL_YR_NUM = PERIOD_TO_PROCESS.FSCL_YR_NUM) 
   ON (AIRMODEL_NETWORK_SUMMARY1.rowid = r) 
 WHEN MATCHED THEN UPDATE 
  SET CASES_PRODUCED = PRDCTN_RUN_ACTL_CASE_QTY;

निम्नलिखित त्रुटि देता है:

ORA-30,926: स्रोत तालिका में पंक्तियों की एक स्थिर सेट प्राप्त करने में असमर्थ

मैं एक noob हूँ और मदद की जरूरत है :(

धन्यवाद।

02/10/2014 को 01:27
उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
2

आप CASES_PRODUCED को केवल एक ही, अदिश मूल्य प्रदान कर सकते हैं। तो अपने सबक्वेरी केवल एक एकल, अदिश मूल्य का उत्पादन करने की जरूरत है।

आप क्यों अपने सबक्वेरी एक से अधिक पंक्तियां रिटर्न खोजने की जरूरत है।

SELECT DISTINCT ...अद्वितीय पंक्तियां, के रूप में ही नहीं का चयन करेंगे ONE ROW

आप पंक्तियों की समस्त PRDCTN_RUN_ACTL_CASE_QTY के कुल योग की ज़रूरत है?

या औसत?

या अधिकतम संख्या?

या पहली पंक्ति?

एक समग्र फ़ंक्शन का उपयोग करें यदि ऐसा है तो:

कुल

UPDATE AIRMODEL_NETWORK_SUMMARY 
    SET CASES_PRODUCED = (SELECT SUM(PRDCTN_RUN_ACTL_CASE_QTY) ...

मैक्स

UPDATE AIRMODEL_NETWORK_SUMMARY 
    SET CASES_PRODUCED = (SELECT MAX(PRDCTN_RUN_ACTL_CASE_QTY) ...

औसत

UPDATE AIRMODEL_NETWORK_SUMMARY 
    SET CASES_PRODUCED = (SELECT AVG(PRDCTN_RUN_ACTL_CASE_QTY) ...

पहली पंक्ति

UPDATE AIRMODEL_NETWORK_SUMMARY 
    SET CASES_PRODUCED = (SELECT PRDCTN_RUN_ACTL_CASE_QTY ... 
                          FROM ... 
                          WHERE ROWNUM = 1)

यह महत्वपूर्ण है जब सीखने, और वाक्य रचना के साथ संघर्ष कर रहा है, विशेष रूप से, यह है कि आप स्पष्ट रूप से समझ

  1. आप क्वेरी से की जरूरत है
  2. क्या आपकी क्वेरी लौटा रहा है

जब तक आप सफलता एक यकीन है कि आग तरीका गलत डेटा काम करने के लिए लगता है कि बनाने के लिए है पाने के बस विकल्प के एक झुंड की कोशिश कर रहा।

मेरे सुझाव पहले सबक्वेरी कॉपी करने के लिए है SELECTकिसी दूसरी विंडो में है और यह देखने के चलाने के लिए, और परिणाम को समझते हैं। यह स्पष्ट किया जाना चाहिए कि यह एक बहु पंक्ति परिणाम है। जब तक यह एक सही, एकल परिणाम लौटा रहा है सबक्वेरी के साथ कार्य करें, तो यह वापस प्लग बड़ा अद्यतन में।

02/10/2014 को 01:35
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more