我有一个定义节点之间的父子关系的表:如何在递归SQL查询中查找子树中的所有节点?
CREATE TABLE node ( ' pseudo code alert
id INTEGER PRIMARY KEY,
parentID INTEGER, ' should be a valid id.
)
如果parentID
总是指向一个有效现有节点,那么这自然会定义一个树状结构。
如果parentID
是NULL
那么我们可以假设该节点是根节点。
我怎么会:
- 找到所有这些都是给定节点的decendents的节点?
- 查找给定节点下的所有节点到特定深度?
我想做的每个这些作为单个SQL(我期望它必然是递归)或两个相互递归查询。
我在ODBC上下文中这样做,所以我不能依赖任何供应商特定的功能。
编辑
- 没有表写呢,因此增加额外的列/表是完全可以接受的。
- 该树将潜在地更新并添加到相当频繁;辅助数据结构/表格/列将是可能的,尽管需要保持最新。 如果您有任何有关这类查询的魔法书,我想知道。
非常感谢。
看起来像甲骨文虐待MySQL的网站链接,是否有可能现在以某种方式找到教程? – martinthenext 2012-01-09 23:44:12