Я могу сгенерировать иерархию с рекурсивным CTE, но я всегда использовал якорь ... запись верхнего уровня с индикатором верхнего уровня (parentID IS NULL) , Я хотел бы создать иерархию, которая не обязательно имеет определенный якорь. У меня есть много-много справочной таблицы с parentID и childID. Любой родитель может быть ребенком и наоборот (избегая, разумеется, круговой ссылки). Я думаю, что это будет скорее подход «снизу вверх», а не сверху вниз. Мысли?SQL Server: Иерархия рекурсивная CTE без привязки
2
A
ответ
3
Вы не можете построить рекурсивный запрос, используя CTE, не имея хотя бы одного элемента привязки и одного рекурсивного элемента.
Хотя рекурсивный CTE используется для генерации иерархии, проблема в этом случае заключается в том, что данные в таблице не представляют собой иерархию, поскольку иерархия является типом направленного ациклического графа, поэтому она должна иметь один элемент (иерарх), который превосходит все остальные элементы.
Смежные вопросы
- 1. Иерархия SQL Server CTE?
- 2. SQL рекурсивная иерархия очень медленная
- 3. Рекурсивная иерархия Рейтинг
- 4. Рекурсивная проблема CTE
- 5. Рекурсивная функция T-SQL - CTE с ParentID
- 6. Иерархия TSQL CTE
- 7. Рекурсивная строка cte SQL Server 2008, сохраняющая исходное значение
- 8. php category рекурсивная иерархия
- 9. CTE - Обратная иерархия
- 10. SQL Server CTE - рекурсия
- 11. SQL Server CTE puzzle
- 12. Sql рекурсивная ошибка недопустимое имя столбца CTE
- 13. Рекурсивная иерархия EF
- 14. Рекурсивная иерархия SSRS для спецификации материала
- 15. Ошибка SQL Server 2012 CTE?
- 16. NuoDB, эквивалентный SQL Server CTE
- 17. Порядок рекурсии (SQL Server CTE)
- 18. SQL Server chaining with CTE
- 19. SQL Server 2008 CTE Recursion
- 20. Иерархия Рекурсивного SQL Server Query
- 21. SQL Server: родительская дочерняя иерархия
- 22. PostgreSQL рекурсивная проблема производительности CTE
- 23. Вопрос T-SQL CTE (SQL Server 2008)
- 24. Рекурсивная хранимая процедура SQL Server
- 25. SQL Server: рекурсивная хранимая процедура
- 26. Рекурсивная петля в SQL Server
- 27. Иерархия поиска в SQL
- 28. SQL Server: CTE (рекурсия), условие установки вне CTE
- 29. Преобразование SQL Server 2012 CTE в SQL Server 2008
- 30. Иерархия SQL Server 2012 с двумя родителями?
Я бы хотел увидеть образец того, что у вас есть. Возможно, примеры используемых структур и попытки вы в настоящее время работаете. Вот [хорошее место] (http://sqlfiddle.com/#!3/8ecfd/13), чтобы добавить примеры для людей, с которыми можно играть. – whytheq
Если вы попытаетесь использовать рекурсивные CTE, тогда они будут работать вечно. Ну, за исключением того, что MAXRECURSION установлено на другое значение. Я подозреваю, что вам нужен алгоритм ходьбы по графику, который отслеживает уже посещенные узлы. Я не уверен, как реализовать такого зверя с помощью CTE. –
Если я работаю с одним childiID и поставляю childID, этот запрос будет по крайней мере строить иерархию снизу вверх: с c as ( выберите 0 как lvl, a.parentid, a.childid из dbo.ParentChild a где childid = 1 объединение всех выберите LVL + 1, b.parentid, b.childid из dbo.ParentChild б присоединиться к с на c.parentid = b.childid) выбрать отличный от * с заказ по лвл, ParentId , childid; –