У меня есть таблица под названием «Сервисы», которая содержит ServiceID, ParentID и описание, где ParentID является идентификатором ServiceID другой записи. Данные настраиваются таким образом, что они образуют иерархию элементов с несколькими уровнями, а элементы «Root» имеют значение ParentID, равное нулю. Как я могу получить запрос с новым полем, показывающим поток всех родителей до корневого родителя для каждой записи. Конечно, корневые элементы будут иметь это поле пустым. Использование автомобилей в качестве примера, я хотел бы иметь такой текст в этом поле для ввода «Х3» и «Пунто» соответственно:Показать единую иерархию отношений в одном поле в MS SQL
Автомобили> Германия> BMW> 4 Wheel Drive> X3
Автомобили> Италия > FIAT> Передний привод> Punto
Я подозреваю, что у меня должна быть функция, с которой я кормлю ServiceID и которая выполняет необходимую рекурсию, чтобы получить строковое значение, содержащее описание с резьбой. Пробовал унарные отношения в Google, но не смог найти пример с кодом для нужной мне функции.
Заранее благодарен!
UPDATE:
Вот что моя таблица выглядит следующим образом:
CREATE TABLE [dbo].[Services](
[ServiceID] [int] IDENTITY(1,1) NOT NULL,
[ParentID] [int] NULL,
[ServiceDescription] [nvarchar](250) NULL)
Вы можете проверить мой ответ на этот http://stackoverflow.com/questions/14241936/how-can-i-generate-a-hierarchy-path-in-sql-that-leads-to-a -given-node/14243624 # 14243624 – EricZ
Мне удалось использовать ваш пример, чтобы получить список путей, но не смог понять, как его интегрировать с моей таблицей, хотя это то, что мне нужно. Что касается обновления, я просто добавил (со структурой таблицы), как бы я использовал ваш пример для получения такой таблицы ?: ServiceID, ParentID, ServiceDescription, Path – Osprey
Пример @EricZ для одной записи. Ответ, который я дал ниже, является той же рекурсивной логикой, но используется для построения путей для всех записей в таблице. –