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

एक टेबल पर CONNECT BY LEVEL अतिरिक्त पंक्तियाँ क्यों लौटाता है?

पहली क्वेरी में, आप केवल स्तर से जुड़ते हैं। इसलिए यदि स्तर <=1 है, तो आपको प्रत्येक रिकॉर्ड 1 बार मिलता है। यदि स्तर <=2 है, तो आपको प्रत्येक स्तर 1 बार (स्तर 1 के लिए) + N बार मिलता है (जहाँ N तालिका में रिकॉर्ड की संख्या है)। यह ऐसा है जैसे आप क्रॉस जॉइनिंग कर रहे हैं, क्योंकि आप परिणाम को सीमित करने के लिए अन्य शर्तों के बिना, तालिका से सभी रिकॉर्ड केवल स्तर तक पहुंचने तक उठा रहे हैं। स्तर <=3 के लिए, यह उन परिणामों में से प्रत्येक के लिए फिर से किया जाता है।

तो 3 रिकॉर्ड के लिए:

  • Lvl 1:3 रिकॉर्ड (सभी स्तर 1 वाले)
  • Lvl 2:3 रिकॉर्ड जिसमें स्तर 1 + 3*3 रिकॉर्ड हैं जिनका स्तर 2 =12 है
  • Lvl 3:3 + 3*3 + 3*3*3 =39 (वास्तव में, 13 रिकॉर्ड प्रत्येक)।
  • Lvl 4:पैटर्न देखना शुरू कर रहे हैं? :)

यह वास्तव में एक क्रॉस जॉइन नहीं है। एक क्रॉस जॉइन केवल उन रिकॉर्ड्स को लौटाएगा जिनके पास इस क्वेरी परिणाम में स्तर 2 है, जबकि इस कनेक्ट के साथ, आपको स्तर 1 के साथ-साथ स्तर 2 वाले रिकॉर्ड भी मिलते हैं, जिसके परिणामस्वरूप 3 + 3 * 3 के बजाय केवल 3*3 रिकॉर्ड।



  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 में प्राथमिक कुंजी का नाम कैसे बदलें ताकि इसका पुन:उपयोग किया जा सके

  3. विंडोज 7 पर ROracle पैकेज कैसे स्थापित करें?

  4. एक कस्टम कॉलम नाम के साथ एक विदेशी कुंजी मैप करना

  5. Oracle में यूनिक्स टाइमस्टैम्प कैसे लौटाएं?