sql >> Database teknologi >  >> RDS >> PostgreSQL

Rekursiv forespørgselsudfordring - simpelt forælder/barn eksempel

Med hjælp fra RhodiumToad på #postgresql er jeg nået frem til denne løsning:

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

Resultatet er nøjagtigt som forventet.



  1. Opdater forespørgsel, der resulterer forkert

  2. Hvordan opdaterer man en post ved hjælp af sequelize for node?

  3. Sådan viser du databaser og tabeller i PostgreSQL ved hjælp af psql

  4. Hvordan indstilles en PostgreSQL-funktion som standardværdi i GORM?