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

単一のテーブルに格納されたnレベルの親子関係を取得するためのPostgresqlクエリ

    Postgresを使用すると、再帰共通テーブル式を使用できます:

    with recursive rel_tree as (
       select rel_id, rel_name, rel_parent, 1 as level, array[rel_id] as path_info
       from relations 
       where rel_parent is null
       union all
       select c.rel_id, rpad(' ', p.level * 2) || c.rel_name, c.rel_parent, p.level + 1, p.path_info||c.rel_id
       from relations c
         join rel_tree p on c.rel_parent = p.rel_id
    )
    select rel_id, rel_name
    from rel_tree
    order by path_info;
    

    あなたの例に基づくSQLFiddle: http://sqlfiddle.com/#!11/59319/19

    (SQLFiddleはスペースを正しく表示しないため、インデント用のスペースをアンダースコアに置き換えました)




    1. nativeQueryを使用したSpringBootQueryアノテーションがPostgresqlで機能しない

    2. C#を使用して000webhost上のmysqlに接続する

    3. RDLCLocalReportのExcelへのエクスポートが非常に遅い

    4. python-mysql-connector 1.16、django 1.6、およびpython3.2.3でのインポートエラー