sql >> Database >  >> RDS >> PostgreSQL

Recursieve query-uitdaging - eenvoudig voorbeeld van ouder/kind

Met hulp van RhodiumToad op #postgresql ben ik tot deze oplossing gekomen:

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

Het resultaat is precies zoals verwacht.



  1. Bereken het aantal kalendermaanden dat twee datums omvatten

  2. Meerdere indexen versus indexen met meerdere kolommen

  3. Klassiek ADO.NET - Hoe geef ik UDT door aan een opgeslagen procedure?

  4. Een join gebruiken met drie tabellen wanneer een veld mogelijk null is