लेवल द्वारा कनेक्ट का उपयोग करना तालिका पर प्रदर्शन करते समय बहुत सारी पंक्तियां वापस करना प्रतीत होता है। क्या हो रहा है इसके पीछे तर्क क्या है?एक टेबल पर स्तर से कनेक्ट क्यों अतिरिक्त पंक्तियों को वापस करता है?
निम्न तालिका मान लिया जाये:
create table a (id number);
insert into a values (1);
insert into a values (2);
insert into a values (3);
इस क्वेरी 12 पंक्तियों रिटर्न (SQL Fiddle)। स्तंभ LVL तालिका एक में किया जा रहा 1 और तीन प्रत्येक के लिए के मूल्य के साथ तालिका एक में से प्रत्येक के लिए
select id, level as lvl
from a
connect by level <= 2
order by id, level
एक पंक्ति जहां स्तंभ LVL, 2 है अर्थात्:
ID | LVL ---+----- 1 | 1 1 | 2 1 | 2 1 | 2 2 | 1 2 | 2 2 | 2 2 | 2 3 | 1 3 | 2 3 | 2 3 | 2
यह इस के बराबर है क्वेरी, जो एक ही परिणाम देता है।
select id, level as lvl
from dual
cross join a
connect by level <= 2
order by id, level
मुझे समझ नहीं आता क्यों इन प्रश्नों 12 पंक्तियों को वापस या क्यों तीन पंक्तियों जहां LVL 2 और केवल एक ही जहां LVL आईडी स्तंभ के प्रत्येक मूल्य के लिए 1 है देखते हैं है।
आईडी के प्रत्येक मान के लिए 3 returns 13 rows पर "कनेक्ट" स्तरों की संख्या में वृद्धि। 1 जहां एलवीएल 1, 3 है जहां एलवीएल 2 और 9 है जहां एलवीएल 3 है। ऐसा लगता है कि पंक्तियों में पंक्तियों की संख्या एलवीएल माइनस के मूल्य की शक्ति के लिए है।
I हालांकि यह है कि इन प्रश्नों निम्नलिखित है, जो 6 पंक्तियों
select id, lvl
from (select level as lvl
from dual
connect by level <= 2
)
cross join a
order by id, lvl
documentation विशेष रूप से स्पष्ट नहीं है, रिटर्न मेरे लिए, समझा क्या घटित होता है तो में के रूप में ही किया जाएगा होगा। इन शक्तियों के साथ क्या हो रहा है और पहले दो प्रश्न तीसरे के समान क्यों नहीं हैं?
हम MySQL 5 में कुछ, इस के बराबर है? – abhijitcaps