Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 HierarchyId получить полный путь для каждого элемента  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
SQL 2008

CREATE TABLE SimpleDemo2 (
	Node HierarchyID PRIMARY KEY CLUSTERED,
	NodeLevel AS Node.GetLevel(),
	ID INT UNIQUE NOT NULL,
	Name VARCHAR(50) NOT NULL
)
CREATE UNIQUE INDEX bfs_index  ON SimpleDemo2 (NodeLevel,Node)  
GO
INSERT INTO SimpleDemo2(NODE,ID,NAME)
SELECT '/'			,	1,	'Thuru' UNION ALL
SELECT '/1/'		,	2,	'Johnny' UNION ALL
SELECT '/1.1/'		,	4,	'Alex' UNION ALL
SELECT '/1.1.1/'	,	6,	'Steve' UNION ALL
SELECT '/1.1.1/1/'	,	7,	'S1' UNION ALL
SELECT '/1.1.1/2/'	,	8,	'S2' UNION ALL
SELECT '/1.2/'		,	5,	'Niki' UNION ALL
SELECT '/2/'		,	3,	'Robert' 
...........................


собственно вопрос
как получить полные пути для каждого элемента в виде Name/Name/.....
спасибо
28 июн 15, 15:16    [17825323]     Ответить | Цитировать Сообщить модератору
 Re: HierarchyId получить полный путь для каждого элемента  [new]
Gviber
Member

Откуда:
Сообщений: 124
Стандартной функции для этого похоже нет.

Если действительно нет, то через рекурсию.
28 июн 15, 15:34    [17825365]     Ответить | Цитировать Сообщить модератору
 Re: HierarchyId получить полный путь для каждого элемента  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
ну как вопрос и стоит
как через CTE получить такое ?
что с чем связать ?
28 июн 15, 15:36    [17825378]     Ответить | Цитировать Сообщить модератору
 Re: HierarchyId получить полный путь для каждого элемента  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
хм
как то так

;with cteDemoPath AS
(
  SELECT id, node, CAST(name AS NVARCHAR(MAX)) AS path
  FROM dbo.SimpleDemo
  WHERE node = HIERARCHYID::GetRoot()
  UNION ALL
  SELECT C.id, C.node, 
    CAST(P.path + ' > ' + c.name  AS NVARCHAR(MAX))
  FROM cteDemoPath AS P
    JOIN SimpleDemo AS C
      ON C.node.GetAncestor(1) = P.node
)
select * from cteDemoPath
28 июн 15, 15:46    [17825404]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить