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

FROM क्लॉज में नेस्टेड कोष्ठक मान्य Oracle SQL सिंटैक्स हैं?

जॉइन क्लॉज . में कोष्ठक का उपयोग करना कानूनी सिंटैक्स है एक FROM . में , और कोष्ठक करते हैं प्रभाव पड़ता है।

इस प्रश्न पर विचार करें:

WITH table_a AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 30),
     table_b as ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 20),
     table_c AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 10)
SELECT a.id, b.id, c.id
FROM   table_a a left join ( table_b b inner join table_c c ON c.id = b.id ) ON b.id = a.id 
ORDER BY 1,2,3;

कोष्ठक आपको तालिकाओं का आंतरिक जुड़ाव करने की अनुमति देता है b और c और उसके बाद बाहरी उसमें a . से जुड़ें ।

कोष्ठक के बिना, यह व्यक्त करने का प्रयास करना कि बाएं शामिल होना असंभव होगा। आपको या तो तालिका a . से 11-30 पंक्तियाँ नहीं मिलेंगी या फिर तालिका की 11-20 पंक्तियाँ c nullहोगा s (इस पर निर्भर करता है कि आपने इसे कैसे करने की कोशिश की)।

ध्यान दें कि उपरोक्त क्वेरी इसके बराबर है:

WITH table_a AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 30),
     table_b as ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 20),
     table_c AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 10)
SELECT a.id, b.id, c.id
FROM   table_b b inner join table_c c on c.id = b.id right join table_a a on a.id = b.id 
ORDER BY 1,2,3;

, जिसे कोष्ठक की आवश्यकता नहीं है। इसलिए यदि आप वास्तव में FROM . में कोष्ठकों के उपयोग से बचना चाहते हैं खंड, आप आमतौर पर ऐसा कर सकते हैं। व्यक्तिगत रूप से, मैं LEFT JOIN पसंद करता हूं RIGHT JOIN के बजाय कोष्ठक के साथ विधि .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00913 त्रुटि जब बहुत सारे IN स्टेटमेंट का उपयोग करते हैं

  2. मैं Oracle फॉर्म बिल्डर के माध्यम से एक फ़ोल्डर कैसे बना सकता हूँ?

  3. ओरेकल रिकॉर्ड इतिहास एक सीमा के भीतर टाइमस्टैम्प के रूप में उपयोग कर रहा है

  4. Oracle में DatedIFF फ़ंक्शन

  5. SQLcl . में सिंटैक्स हाइलाइटिंग को कैसे कॉन्फ़िगर करें?