У меня есть следующая таблица в базе данных SQL Server 2008:
Id  Name       ParentFolder
--  ----       ------------
1   Europe     NULL
2   Asia       NULL
3   Germany    1
4   UK         1
5   China      2
6   India      2
7   Scotland   4
ParentFolder - это FK для идентификатора в той же таблице. Я хотел бы создать представление, которое приведет к чему-то вроде этого:
Id  Name       FullName
--  ----       --------
1   Europe     Europe
2   Asia       Asia
3   Germany    Europe/Germany
4   UK         Europe/UK
5   China      Asia/China
6   India      Asia/India
7   Scotland   Europe/UK/Scotland
Как вы можете видеть, мне нужно построить значения FullName путем рекурсивного использования отношения ParentFolder произвольным количеством раз, пока не будет найден NULL.
Изменить. Каждая строка в таблице "знает", что другая строка является ее родительской, но не знает ее абсолютной позиции в иерархии. По этой причине система линий, в которой каждая строка сохраняет свое абсолютное местоположение в дереве иерархии, не подходит.
Мне известно о функции иерархии SQL Server 2008, но, насколько я знаю, она работает только с фиксированным количеством уровней рекурсии. В моем случае, однако, вы никогда не знаете, сколько уровней вы найдете, и они могут меняться от строки к строке.
Я также видел похожие вопросы, которые вы писали здесь. Однако я думаю, что никто не спрашивал о построении "путей" для каждой строки в таблице. Извините, если я пропустил это.
Большое спасибо.
