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

ऑरैकल कनेक्ट बाय के साथ एक आसन्न सूची मॉडल में सभी नोड्स खोजें

अंत में मैं इस तरह के समाधान के साथ आया:

  SELECT child FROM child_parent START WITH parent =
   (
    SELECT DISTINCT parent FROM   
     (
      SELECT parent
      FROM child_parent
      WHERE CONNECT_BY_ISLEAF = 1
        START WITH child = 5
        CONNECT BY PRIOR parent = child
      UNION
      SELECT parent
      FROM child_parent
      WHERE parent = 5
     ) 
   )
   CONNECT BY NOCYCLE PRIOR child = parent
   UNION
   SELECT DISTINCT parent FROM   
   (
    SELECT parent
    FROM child_parent
    WHERE CONNECT_BY_ISLEAF = 1
      START WITH child = 5
      CONNECT BY PRIOR parent = child
    UNION
    SELECT parent
    FROM child_parent
    WHERE parent = 5
   );

यह दिए गए उदाहरण के लिए सभी नोड्स के साथ काम करता है। लेकिन अगर लीफ में से एक का दूसरा पैरेंट है और शुरुआती बिंदु इस नोड के ऊपर या किसी अन्य शाखा में है तो यह काम नहीं करता है।

लेकिन मेरे लिए यह काफी अच्छा है।

ग्राफ में सभी नोड्स प्राप्त करने का एक समाधान हो सकता है:उपरोक्त क्वेरी के विपरीत (ऊपर से नीचे तक) लागू करें और फिर उन्हें निष्पादित करें (नीचे से ऊपर, ऊपर से नीचे) इसके विपरीत जब तक आपको कोई और नया नोड न मिले। इसकी आवश्यकता होगी PL/SQL और मुझे भी प्रदर्शन के बारे में पता नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप Oracle 11g में एक विभाजित तालिका को एक टेबलस्पेस से दूसरे में कैसे स्थानांतरित करते हैं?

  2. ओरेकल पैकेज बनाएं PLS-00103 का सामना करना पड़ा:प्रतीक का सामना करना पड़ा CREATE

  3. ORACLE DB में लगभग 300 तालिकाओं से csv या txt फ़ाइलों में डेटा कैसे निर्यात करें?

  4. जावा:परिणामसेट getString () वातावरण के बीच भिन्न होता है

  5. टॉप एन और बॉटम नंबर चुनें