0

ltree_hierarchy ( https://github.com/cfabianski/ltree_hierarchy ) と呼ばれるレールと宝石を使用した階層データ モデルを使用しています。各ノードには親 ID (現在のノードの直接の親) があります。

         1

     2       3

 4    5    6    7

階層構造は、postgres の ltree 拡張を使用して実現されます。また、gem ltree_hierarchy には、親とパスが保存されます。

node       parent        path

  1         NULL         1

  2          1           1.2

  3          1           1.3

  4          2           1.2.4

  5          2           1.2.5

  6          3           1.3.6

  7          3           1.3.7

ノードのparent_idを使用して、兄弟、親、および子供を取得できます。何かのようなもの、

select * from table where parent_id = 1; # for getting the children of a node 1

select * from table where parent_id = 1 and id !=2; # for getting the sibling of a node 2

単一のクエリでノードの子と孫を取得するための提案はありますか?

4

1 に答える 1