Рекурсивный выбор в SQL

У меня проблема, я просто не могу понять. Я знаю, чего хочу, просто не могу вывести это на экран. У меня есть таблица, которая выглядит примерно так:

Id, PK UniqueIdentifier, NotNull
Name, nvarchar(255), NotNull
ParentId, UniqueIdentifier, Null

ParentId имеет FK для Id.

Я хочу получить плоский список всех идентификаторов под идентификатором, который я передаю.

Пример:

1   TestName1    NULL
2   TestName2    1
3   TestName3    2
4   TestName4    NULL
5   TestName5    1

Дерево могло бы выглядеть так:

-1
  -> -2
       -> -3
  -> -5
-4

Если бы я сейчас попросил 4, я бы получил обратно только 4, но если бы я попросил 1, я бы получил 1, 2, 3 и 5. Если я попрошу 2, я получу 2, 3 и т. Д.

Есть ли кто-нибудь, кто может указать мне правильное направление. Мой мозг перегорел, поэтому я ценю любую помощь, которую могу получить.

10
задан MrW 13 April 2011 в 12:46
поделиться