sql >> データベース >  >> RDS >> PostgreSQL

再帰クエリチャレンジ-単純な親/子の例

    #postgresqlのRhodiumToadの助けを借りて、私はこの解決策にたどり着きました:

    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. SQLAlchemy:複数のテーブルで日ごとにグループ化

    2. SQLドット表記

    3. Oracle番号からC#10進数

    4. バイナリ情報を含む多くの行と列を持つDBテーブルの設計