【发布时间】:2016-06-30 03:09:54
【问题描述】:
我正在尝试从表中获取所有子节点,但我的查询得到了一些额外的结果,我不确定为什么
SELECT [pkID]
,[parentID]
,[CategoryName]
FROM [tblCategory]
WHERE [pkID] = 6
UNION ALL
SELECT [Sub].[pkID]
,[Sub].[ParentID]
,[Sub].[CategoryName]
FROM [tblCategory] [Sub]
INNER JOIN [tblCategory] AS [Sub2] ON [Sub].[ParentID] = [Sub2].[pkID]
运行此查询时,我正在获取其他子节点 注意* 在我的 VB.Net 应用程序中(需要调用此 SQL)ParentID 为 0 是树视图中的根节点。
表格
pkID | ParentID | CategoryName
1 | 6 | Category1
2 | 0 | Category2
3 | 0 | Category3
4 | 0 | Category4
5 | 0 | Category5
6 | 0 | Category6
7 | 0 | Category7
8 | 0 | Category8
9 | 7 | Category9
结果
pkID | parentID | CategoryName
6 | 0 | Category6
1 | 6 | Category1
9 | 7 | Category9 <-- not a child of pkID=6
【问题讨论】:
-
这是当前的结果还是想要的结果? (同时指定)
-
这是递归 CTE 吗?因为看起来你错过了 CTE
-
通过您的编辑,您需要递归 cte 并适当锚定我会更改。
-
也许你应该让你的例子更大。您是否需要 6 的第一个孩子 .... 与 6 相关的每个节点或以 6 开头的每个结束叶子。
-
这适用于哪个 RDBMS?请添加标签以指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或其他完全不同的东西。
标签: sql parent-child