【发布时间】:2014-11-14 19:23:52
【问题描述】:
我有两个存储过程。第一个存储过程返回顶级父级,第二个过程将返回提供的父 ID 的子级。每个孩子也可能是父母。
我在研究 CTE 时遇到的问题是每个示例似乎都依赖于 ID+1,这在此处不起作用,因为项目的 ID 不是连续的。这里的任何指导将不胜感激。
【问题讨论】:
-
好吧,我不确定从哪里开始。我知道这个问题需要递归,但是我能找到的关于 CTE 的所有示例都需要某种形式的顺序 id,可以递增或递减以获取下一条数据,这在此处不起作用。
-
从实际陈述您的问题开始,向我们展示您的查询和错误
-
你能提供一些ID的例子吗?数据库中的关系是如何维护的?表有父列和子列吗?
-
您没有正确阅读示例 - 递归可能加入 level + 1,而不是 ID + 1。
-
只要表格有 ID 和 ParentID,CTE 就可以工作。但是,当 ID 没有父母时,我假设 parentID 为 NULL。否则,如果存在循环,您可能会进行无限递归...
标签: sql recursion common-table-expression