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

PostgreSQL:एक शर्त के सही होने तक लूप करें

एसक्यूएल के लिए आपकी सोच गलत है। लूप और शर्तों और चर के संदर्भ में मत सोचो; इसके बजाय, अपने इच्छित डेटा का वर्णन करने के तरीके के बारे में सोचें। मुश्किल हिस्सा यह है कि आप चाहते हैं कि क्वेरी अपने स्वयं के परिणामों को संदर्भित करे और यही पुनरावर्ती सीटीई के लिए हैं:

आप कुछ इस तरह खोज रहे हैं:

with recursive path as (
    select id, parent from T where id = 4
    union all
    select t.id, t.parent from T t join path p on t.id = p.parent
)
select id, parent
from path

इससे आपको यह मिलेगा:

 id | parent 
----+--------
  4 |      2
  2 |      1
  1 |       

और फिर आप उस पथ को वापस एक साथ रख सकते हैं जो डेटाबेस के बाहर अधिक लिंक्ड-लिस्टी (या आपकी क्लाइंट भाषा में जो भी उपयुक्त हो) होगा। आपको parent को शामिल करने की आवश्यकता नहीं है बेशक लेकिन इसे शामिल करने से आपको "पॉइंटर्स" को ठीक करने में मदद मिलेगी।




  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. Postgres/SQLAlchemy पर application_name सेट करना

  3. इनर जॉइन और आउटर जॉइन; तालिकाओं का क्रम महत्वपूर्ण से है?

  4. क्या JSONB PostgreSQL सरणियों को बेकार बनाता है?

  5. PHP में SQL चर को कैसे बांधें?