Я пытаюсь получить все дочерние узлы из таблицы, но мой запрос набирает некоторые дополнительные результаты, и я не знаю, почемуПолучить все дочерние узлы из таблицы
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
Это текущий результат или желаемый результат? (укажите оба) – jarlh
Является ли это рекурсивным CTE? потому что выглядит так, как будто вы пропустите CTE –
С помощью вашего редактирования вам потребуется рекурсивный cte и привязать его соответствующим образом, я изменюсь. – Matt