|
|
Знаете ли Вы, что ... | |
...до того как открыть новую тему, стоит использовать поиск: такая тема уже может существовать. | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
ЦППМП Центр подготовки и поддержки молодых программистов (cppmp.uz). Еще разделы на форуме: Doppix |
Ответить |
|
Опции темы | Опции просмотра |
28.04.2009 12:33 | #1 | |||
Скажем есть таблица, MenuItem
MenuItem --------- Id int primary key Name ntext ParentId int (foreign key на саму себя) Depth int (глубина вложенности) в качестве входного параметра задается число :id. Надо вывести весь список имен (Name) записей по иерархии вверх для данного :id в качестве первичного ключа. Например, Цитата:
Для 3, это будет "Test31, Test21, Test1", Для 4, "Test22, Test1".
__________________
http://i29.tinypic.com/2u6o65y.jpg Последний раз редактировалось Khamza Davletov; 28.04.2009 в 12:37. |
||||
|
Ответить |
28.04.2009 13:13 | #3 |
|
В лоб - не пытался оптимизировать, возможно есть более рациональное решение
Код:
GO DECLARE @temp TABLE ( Id INT NOT NULL ) DECLARE @MenuItemId int, @CurrentParentId int, @CurrentId int SET @MenuItemId = 3 SELECT @CurrentId = Id, @CurrentParentId = ParentId FROM MenuItems WHERE Id = @MenuItemId INSERT INTO @temp VALUES(@CurrentId) WHILE @CurrentParentId IS NOT NULL BEGIN SELECT @CurrentId = Id, @CurrentParentId = ParentId FROM MenuItems WHERE Id = @CurrentParentId INSERT INTO @temp VALUES(@CurrentId) END SELECT @CurrentId = Id FROM MenuItems WHERE Id = @CurrentParentId INSERT INTO @temp VALUES(@CurrentId) SELECT * FROM MenuItems WHERE Id IN (SELECT Id FROM @temp) GO |
|
Ответить |
"+" от:
|
29.04.2009 10:46 | #5 | ||
Цитата:
SELECT DECODE(level, 1, '', 2 , '- ', 3, '--', 4, '---')||name FROM MenuItem START WITH id = 1 CONNECT BY PRIOR id = parent_id Последний раз редактировалось Nestik; 29.04.2009 в 10:48. |
|||
|
Ответить |
"+" от:
|
29.04.2009 11:12 | #6 |
Неа, надо на T-SQL, ну то что comes with MS SQL Server.
__________________
http://i29.tinypic.com/2u6o65y.jpg Последний раз редактировалось Khamza Davletov; 29.04.2009 в 11:30. |
|
|
Ответить |
29.04.2009 11:25 | #7 | ||
Сообщений: 134
+ 0
40/30
– 0
19/11
|
Цитата:
Цитата:
Последний раз редактировалось stbd; 29.04.2009 в 11:28. |
||
|
Ответить |
"+" от:
|
Реклама и уведомления | |
|