ruby-on-rails - 让 child 、孙子进入层次结构

标签 ruby-on-rails postgresql hierarchical-data ltree

我正在使用名为 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

是否有任何建议可以在单个查询中获取节点的子节点和孙节点?

最佳答案

因为你在下面使用 postgres 的 LTREE - 你可以直接查询它(见 postgres documentation )就像

 select * from table where path ~ '1234.*{1,2}'

(这里的1234是parent的id,*{1,2}表示最少匹配一级,最多匹配2级)

关于ruby-on-rails - 让 child 、孙子进入层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54850228/

相关文章:

ruby-on-rails - 放与幂等

postgresql - 使用 Pytables 优化 HDF5 中的写入速度

mysql - 如何在Postgresql中选择一列显示为具有差异值的2列结果

sql - 基于其他列中条件的累计和

mysql - 如何使用 mysql 循环编写 mysql 查询以按父子分组的订单列表?

ruby-on-rails - ruby/rails bool 方法命名约定

html - 如何在 Rails 3 中呈现混​​淆/缩小/优化的 HTML/CSS?

javascript - 是否有用于 Javascript 和 Rails 的库来使用 key 加密和解密?

sql - Oracle中sql中的树结构。如何在SQL Oracle中显示树、子节点和父节点

oracle - 是否可以使用 Oracle 获取每个级别的员工汇总计数?