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

पुनरावर्ती क्वेरी चुनौती - सरल माता-पिता/बाल उदाहरण

#postgresql पर रोडियमटॉड की मदद से, मैं इस समाधान पर पहुंचा हूं:

WITH RECURSIVE node_graph AS (
    SELECT ancestor_node_id as path_start, descendant_node_id as path_end,
           array[ancestor_node_id, descendant_node_id] as path 
    FROM node_relations

    UNION ALL 

    SELECT ng.path_start, nr.descendant_node_id as path_end,
           ng.path || nr.descendant_node_id as path
    FROM node_graph ng
    JOIN node_relations nr ON ng.path_end = nr.ancestor_node_id
) 
SELECT * from node_graph order by path_start, array_length(path,1);

परिणाम बिल्कुल अपेक्षित है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres 9.1 में किसी तालिका का OID निर्धारित करना?

  2. postgresql - टेक्स्ट फ़ील्ड के भीतर एक स्ट्रिंग के सभी उदाहरणों को बदलें

  3. मैं दूरी द्वारा आदेशित जेपीए इकाई से परिणाम कैसे प्राप्त कर सकता हूं?

  4. STRICT संशोधक के बिना कार्य तेजी से निष्पादित होता है?

  5. फायरबर्ड से पोस्टग्रेएसक्यूएल में क्वेरी का अनुवाद