[T-SQL] Поддерево одним запросом, как?

agaaaa

Таблица Table, поля ID и ParentID.
Как для заданной записи получить всех её детей со всех уровней в один запрос? Возможно ли это?

hprt

select @@version

Marinavo_0507

поиск по форуму находит

agaaaa

Нашёл только "Древовидный запрос на T-SQL", но по ссылке Красина сказано, что приходится делать рекурсивный запрос, но не сказано как.

klyv

Почитай в MSDN примеры про CTE. Там всё есть.

anton7805

в sql server 2000 можно сделать только рекурсивной процедурой/функцией имхо;
в 2005-ом ключевое слово with

hprt

Ну почему же обязательно рекурсивной прокой/функцией - легко можно сделать в цикле. А в 2008 можно еще на hierarchyid посмотреть. Собственно, поэтому версию сервера и стоит писать всегда.
upd. В один запрос - никак, но в функции можно сделать цикл и ее уже в запросе дергать

hprt

Не, на самом деле в 2000 можно, если данные подготовить - например, хранить иерархию типа 'id1.id2.id3.' и потом искать по началу

Dimart

в sql server 2000 можно сделать только рекурсивной процедурой/функцией имхо;
в 2005-ом ключевое слово with
+1

klyv

в 2005-ом ключевое слово with
а что после with пишется? как это называется?

hprt

Почитай в MSDN примеры про CTE. Там всё есть.

в 2005-ом ключевое слово with
а что после with пишется? как это называется?

мда :)
Оставить комментарий
Имя или ник:
Комментарий: