gpt4 book ai didi

sql - 关闭 : An idea how to extract a forest with recursive SQL query

转载 作者:行者123 更新时间:2023-11-29 12:22:50 24 4
gpt4 key购买 nike

我需要一个想法,如何在 PostgreSql 中使用递归 WITH .. RECURSIVE 查询提取记录林。数据结构大概是这样的

create table rule ( id int primary key, obj_id int, start_time timestamp )

我需要提取每个对象的所有规则链,并在第 i 个记录在功能上依赖于前一个记录时顺便重新计算每个第 i 个记录的开始时间。这就是我需要递归查询的方式。我知道如何提取单个列表,它看起来像

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) -> ...

或:

object1|rule1
object1|rule2
...
object2|rule1
object2|rule2
...

在这里我完全被困住了。我读过许多关于树和列表的示例,但它们通常使用单个根记录进行操作。有没有办法用多个根来解决这个问题?可能我需要提取非递归部分中的整个记录​​集,然后将其与自身结合起来重新计算 start_time 字段?还有其他想法吗?

最佳答案

为什么不先选择所有根,然后使用递归选项来填充森林?

关于sql - 关闭 : An idea how to extract a forest with recursive SQL query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com