Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle-Conveting SQL से ANSI SQL

यह खंड शायद समस्या पैदा कर रहा है:

  FROM BOM_CHILDS C
     , XX_MAIN.XX_MAST MAST
     , XX_MAIN.XX_STPO STPO
  WHERE C.MATNR = MAST.MATNR(+)
   AND MAST.STLNR = STPO.STLNR(+)
   AND MAST.STLAN(+) = '1'
   AND MAST.WERKS(+) = C.WERKS
   AND STPO.IDNRK IS NULL

इसे थोड़ा आसान बनाने के लिए, WHERE . को पुनर्व्यवस्थित करें तालिकाओं को क्रमबद्ध करने के लिए खंड कि वे कैसे संबंधित हैं:

FROM BOM_CHILDS C
 , XX_MAIN.XX_MAST MAST
 , XX_MAIN.XX_STPO STPO
-- Joining C to MAST
WHERE C.MATNR = MAST.MATNR(+)
  AND C.WERKS = MAST.WERKS(+)
  AND MAST.STLAN(+) = '1'
-- Joining MAST to STPO
  AND MAST.STLNR = STPO.STLNR(+)
  AND STPO.IDNRK IS NULL

हमारे पास C है MAST से जुड़ें C . का उपयोग करना "ड्राइवर" तालिका के रूप में और MAST . से डेटा उठा रहा है जहां यह मेल खाता है (बाएं जोड़):

FROM BOM_CHILDS C
LEFT JOIN XX_MAIN.XX_MAST MAST
  ON C.MANTR = MAST.MANTR
 AND C.WERKS = MAST.WERKS
 AND MAST.STLAN = '1'

फिर हमें STPO add जोड़ना होगा जुड़ने के लिए:

LEFT JOIN XX_MAIN.XX_STPO STPO
  ON MAST.STLNR = STPO.STLNR
 AND STPO.IDNRK IS NULL

इन सबको मिलाकर हम पाते हैं:

FROM BOM_CHILDS C
LEFT JOIN XX_MAIN.XX_MAST MAST
  ON C.MANTR = MAST.MANTR
 AND C.WERKS = MAST.WERKS
 AND MAST.STLAN = '1'
LEFT JOIN XX_MAIN.XX_STPO STPO
  ON MAST.STLNR = STPO.STLNR
 AND STPO.IDNRK IS NULL

उसने कहा , भले ही (+) बाएं/दाएं/बाहरी जुड़ाव के लिए काम करता है, Oracle अनुशंसा करता है नहीं इसका उपयोग करना :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल में, मैं उस तारीख का पता कैसे लगा सकता हूं जिस दिन डेलाइट सेविंग टाइम शुरू/समाप्त होता है?

  2. Oracle PLSQL में सेल्फ-क्लोजिंग xml टैग कैसे प्राप्त करें?

  3. ओरेकल/पीएलएसक्यूएल में भागों से डेटाटाइम कैसे बनाएं?

  4. बीए वेबलॉजिक वर्क फोल्डर कहां है

  5. SOUNDEX () Oracle में फ़ंक्शन