sql >> Databáze >  >> RDS >> PostgreSQL

Výzva rekurzivního dotazu – jednoduchý příklad rodič/dítě

S pomocí RhodiumToad na #postgresql jsem dospěl k tomuto řešení:

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);

Výsledek je přesně podle očekávání.



  1. Načíst naposledy vloženou IDENTITY Oracle

  2. utf8_general_ci:které znaky jsou stejné?

  3. Podporuje transakce, zamykání na úrovni řádků a cizí klíče

  4. SQL křížový odkaz na jinou tabulku pro kontrolu dat