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

रिकर्सिव सीटीई मनमानी बिंदु से माता-पिता के साथ फ़ील्ड को जोड़ता है

ऊपर-नीचे . में विधि प्रारंभिक क्वेरी को केवल मूल (माता-पिता के बिना आइटम) का चयन करना चाहिए, इसलिए क्वेरी प्रत्येक पंक्ति को केवल एक बार लौटाती है:

with recursive top_down as (
    select id, parent, text
    from test
    where parent is null
union all
    select t.id, t.parent, concat_ws('/', r.text, t.text)
    from test t
    join top_down r on t.parent = r.id
)
select id, text
from top_down
where id = 4    -- input

यदि आपका लक्ष्य किसी विशिष्ट वस्तु को खोजना है, तो नीचे से ऊपर दृष्टिकोण अधिक कुशल है:

with recursive bottom_up as (
    select id, parent, text
    from test
    where id = 4    -- input
union all
    select r.id, t.parent, concat_ws('/', t.text, r.text)
    from test t
    join bottom_up r on r.parent = t.id
)
select id, text
from bottom_up
where parent is null

दोनों प्रश्नों में अंतर देखने के लिए अंतिम जहां स्थितियां निकालें।

रेक्सटेस्टर में इसका परीक्षण करें।




  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. Postgresql सर्वर पर पोस्टग्रेज नाम का डिफ़ॉल्ट डेटाबेस

  3. PostgreSQL डेटाबेस कॉलम से गैर-संख्यात्मक मान लौटाएं

  4. PostgreSQL 9.3 . में एक्सेल डेटा आयात करें

  5. पासवर्ड के बिना psql कमांड के साथ बैच फ़ाइल चलाएँ