2016-02-11 8 views
7

में शामिल होकर तारांकन कनेक्ट का चयन करें select *connect by और left join के साथ संयुक्त सभी कॉलम वापस नहीं करता है, लेकिन इन शर्तों में केवल कॉलम ही उपयोग किए जाते हैं। यह व्यवहार मेरे लिए उपयोगी था, बशर्ते कि select * रिलीज में उपयोग नहीं किया जाना चाहिए, यह डेटा के लिए उपयोगी अनुरोध है।ओरेकल एसक्यूएल-9 2 संयोजन

with t1 as (
    select 1 id, 0 parent, 'ROOT' name from dual 
    union all 
    select 2 id, 1 parent, 'CHILD-1' name from dual 
    union all 
    select 3 id, 1 parent, 'CHILD-2' name from dual 
), t2 as (
    select 1 t1id, 'node' special from dual 
) 
    select * from t1 
    left join t2 on t2.t1id=t1.id 
    start with id = 2 
    connect by prior parent = id; 

अन्य प्रश्नों जबकि सभी स्तंभों

select * from t1 
    start with id = 2 
    connect by prior parent = id; 

    select * from t1 
    left join t2 on t2.t1id=t1.id; 

मैं इस कार्यक्षमता पर दस्तावेजीकरण नहीं मिला सकता है देता है, वहाँ किसी भी?

+0

't1 का चयन करें। *, T2। *' काम करता है।कोई विचार नहीं कि 'चयन * 'क्यों नहीं है। – MT0

+0

और 'जहां नाम पूर्ण नहीं है और (विशेष आईएस नल या विशेष नल नहीं है) का मतलब है कि उन कॉलम' SELECT * 'में दिखाई देंगे। – MT0

उत्तर

0

मेरा मानना ​​है कि प्रलेखन आप देख रहे हैं यहां पाया जा सकता: Hierarchical Queries

सबसे अधिक प्रासंगिक भाग: इस प्रकार

ओरेकल श्रेणीबद्ध प्रश्नों संसाधित करता है:

  • एक में शामिल होने, यदि मौजूद है, तो पहले मूल्यांकन किया जाता है, भले ही जॉइन को एफरोम क्लॉज में निर्दिष्ट किया गया हो या WHERE क्लॉज भविष्यवाणी के साथ।

  • स्थिति से कनेक्ट का मूल्यांकन किया जाता है।

  • कोई भी शेष WHERE क्लॉज भविष्यवाणी का मूल्यांकन किया जाता है।

ओरेकल तो निम्न चरणों का उपयोग पदानुक्रम के रूप में इन मूल्यांकनों से जानकारी का उपयोग करता:

  1. ओरेकल जड़ पंक्ति (यों) पदानुक्रम के चयन करता है - उन पंक्तियों को स्टार्ट संतुष्ट स्थिति के साथ

  2. ओरेकल प्रत्येक रूट पंक्ति के बच्चे पंक्तियों का चयन करता है। प्रत्येक पंक्ति पंक्ति को रूट पंक्तियों में से किसी एक के संबंध में स्थिति से कनेक्ट की स्थिति को पूरा करना होगा।

  3. ओरेकल बाल पंक्तियों की लगातार पीढ़ियों का चयन करता है। ओरेकल पहले चरण 2 में लौटाई गई पंक्तियों के बच्चों का चयन करता है, और फिर उन बच्चों के बच्चों, और इसी तरह। ओरेकल हमेशा मौजूदा पैरेंट पंक्ति के संबंध में कनेक्ट द्वारा शर्त का मूल्यांकन करके बच्चों का चयन करता है।

  4. यदि क्वेरी में शामिल होने के बिना WHERE क्लॉज होता है, तो ओरेकल पदानुक्रम से सभी पंक्तियों को समाप्त करता है जो WHERE क्लॉज की स्थिति को पूरा नहीं करते हैं। ओरेकल एक पंक्ति के सभी बच्चों को हटाने की बजाय प्रत्येक पंक्ति के लिए अलग-अलग पंक्तियों के लिए इस स्थिति का मूल्यांकन करता है जो स्थिति को पूरा नहीं करता है।

  5. ओरेकल चित्र 9-1 में दिखाए गए क्रम में पंक्तियां देता है। आरेख में, बच्चे अपने माता-पिता के नीचे दिखाई देते हैं। पदानुक्रमित पेड़ों की व्याख्या के लिए, चित्रा 3-1, "पदानुक्रमित वृक्ष" देखें।

0

नहीं SQL-92 है, लेकिन चयन पूरा * + बंधन द्वारा + बायाँ शामिल हों

WITH t1 AS (
    SELECT 1 ID, 0 PARENT, 'ROOT' NAME FROM dual 
    UNION ALL 
    SELECT 2 ID, 1 PARENT, 'CHILD-1' NAME FROM dual 
    UNION ALL 
    SELECT 3 ID, 1 PARENT, 'CHILD-2' NAME FROM dual 
), t2 AS (
    SELECT 1 t1id, 'node' special FROM dual 
) 
SELECT  * 
FROM  t1, t2 
WHERE t2.t1id(+) = t1.ID 
START WITH ID = 2 
CONNECT BY PRIOR PARENT = ID 
; 
संबंधित मुद्दे