|
|
Знаете ли Вы, что ... | |
![]() |
...до того как открыть новую тему, стоит использовать поиск: такая тема уже может существовать. |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
ЦППМП Центр подготовки и поддержки молодых программистов (cppmp.uz). Еще разделы на форуме: Doppix ![]() |
Ответить |
|
Опции темы | Опции просмотра |
![]() |
#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. |
|||
|
Ответить |
![]() |
#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 |
|
Ответить |
"+" от:
|
![]() |
#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. |
|||
|
Ответить |
"+" от:
|
![]() |
#6 |
![]() |
Неа, надо на T-SQL, ну то что comes with MS SQL Server.
__________________
http://i29.tinypic.com/2u6o65y.jpg Последний раз редактировалось Khamza Davletov; 29.04.2009 в 11:30. |
|
Ответить |
![]() |
#7 | ||
Сообщений: 134
+ 0
40/30
– 0
19/11
![]() |
Цитата:
![]() Цитата:
Последний раз редактировалось stbd; 29.04.2009 в 11:28. |
||
|
Ответить |
"+" от:
|
Реклама и уведомления | |
|