我正在使用名为 ltree_hierarchy( https://github.com/cfabianski/ltree_hierarchy ) 的带有 rails 和 gem 的分层数据模型。因为每个节点都会有一个父 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
是否有任何建议可以在单个查询中获取节点的子节点和孙节点?