closed:如何使用递归SQL查询提取林的想法

closed:如何使用递归SQL查询提取林的想法,sql,postgresql,Sql,Postgresql,我需要一个想法,如何提取一个记录森林使用递归与。。PostgreSql中的递归查询。数据结构大致如下所示 create table rule ( id int primary key, obj_id int, start_time timestamp ) with recursive rq ( select id, obj_id, start_time, id as prev from rule where id = :some_value union all select

我需要一个想法,如何提取一个记录森林使用递归与。。PostgreSql中的递归查询。数据结构大致如下所示

create table rule ( id int primary key, obj_id int, start_time timestamp )
with recursive  rq (
     select id, obj_id, start_time, id as prev from rule where id = :some_value
union all
   select q.*
   from (select id, obj_id, t, lead(r.id) over (order by start_time) as prev) q
   join  rq on rq.prev = q.id
)
我需要提取每个对象的所有规则链,并按照第I条记录在功能上依赖于前一条记录的方式重新计算每个第I条记录的开始时间。这就是我需要递归查询的方式。我有一个想法,如何提取一个单一的列表,它看起来像

create table rule ( id int primary key, obj_id int, start_time timestamp )
with recursive  rq (
     select id, obj_id, start_time, id as prev from rule where id = :some_value
union all
   select q.*
   from (select id, obj_id, t, lead(r.id) over (order by start_time) as prev) q
   join  rq on rq.prev = q.id
)
并给出一个序列,如

(root(A)) -> (rule1) -> (rule2) -> ...
但我需要每个对象的列表:

(root(A)) -> (rule1) -> (rule2) -> ...
(root(B)) -> (rule1) -> (rule2) -> ...

...
(root(N)) -> (rule1) -> (rule2) -> ...
或:


我完全被困在这里了。我已经读过很多关于树和列表的例子,但是它们通常使用一个根记录。有没有一种可能的方法可以使用多个根来实现这个技巧?我可能需要提取非递归部分中的整个记录集,然后将其与自身连接,重新计算开始时间字段?还有其他想法吗?

为什么不先选择所有根,然后使用with recursive选项填充森林