gpt4 book ai didi

sql - 查询以获取数据库中树的所有祖先/后代?

转载 作者:行者123 更新时间:2023-12-04 21:39:35 27 4
gpt4 key购买 nike

我有一个表(id, parent_id, data),其中parent_id 指向同一表中的另一行(或者为空)。

是否有一种标准的方法来查询(1)某个 id 的所有祖先和(2)某个 id 的所有后代?

我也在 DBIx::Class 中这样做,所以如果有一个最方便的方法来使用该模块(或其他一些),我很乐意听到它作为好吧。

编辑:澄清 - 所有 parent = 所有祖先,所有 child = 所有后代。

最佳答案

这在很大程度上取决于您使用的 SQL 的风格。

在 Oracle 中,您可以使用 START WITH id = yourid CONNECT BY PRIOR id = parent_id 结构。在 PostgreSQL 中,您可以使用函数 connectby('tablename', 'id', 'parent_id', 'id', value, 0)

在很多情况下,表示树是有意义的不同的是,通过定义一个将保留的列,对于每个节点,从根元素开始的完整路径到这个节点。

这种技术有很多例子网上找的,最近看到的,这也涉及 DBIx::Class , 可以在这里找到:http://blogs.perl.org/users/ovid/2010/05/threaded-forum-sql.html

关于sql - 查询以获取数据库中树的所有祖先/后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493557/

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