【发布时间】:2010-10-02 03:41:25
【问题描述】:
我有一个表,它定义了节点之间的父子关系:
CREATE TABLE node ( ' pseudo code alert
id INTEGER PRIMARY KEY,
parentID INTEGER, ' should be a valid id.
)
如果parentID总是指向一个有效的现有节点,那么这自然会定义一个树形结构。
如果parentID 是NULL,那么我们可以假设该节点是根节点。
我会怎么做:
- 找出作为给定节点的后代的所有节点?
- 找到给定节点下的所有节点到特定深度?
我希望将这些中的每一个都作为单个 SQL(我希望它一定是递归的)或两个相互递归的查询来执行。
我在 ODBC 上下文中执行此操作,因此我不能依赖任何供应商特定的功能。
编辑
- 尚未编写任何表,因此添加额外的列/表是完全可以接受的。
- 树可能会经常更新和添加;辅助数据结构/表/列是可能的,但需要保持最新。 如果您有任何魔法书籍可以进行此类查询,我想知道。
非常感谢。
【问题讨论】:
-
本文前面已经介绍了一些方法:SQL - how to store and navigate hierarchies