Pregunta: Tengo una vista que quiero derivar de una consulta recursiva.SQL: ¿Cómo crear una vista desde una consulta recursiva?
la consulta es de la misma estructura como esta aquí: http://forums.asp.net/t/1207101.aspx
y representa una vista de árbol como un conjunto de datos ordenados.
¿Cómo puedo crear una vista que hace esto:
;WITH Tree (ID, [NAME], PARENT_ID, Depth, Sort) AS
(
SELECT ID, [NAME], PARENT_ID, 0 AS Depth, CONVERT(varchar(255), [Name]) AS Sort FROM Category
WHERE PARENT_ID = 0
UNION ALL
SELECT CT.ID, CT.[NAME], CT.PARENT_ID, Parent.Depth + 1 AS Depth,
CONVERT(varchar(255), Parent.Sort + ' | ' + CT.[NAME]) AS Sort
FROM Category CT
INNER JOIN Tree as Parent ON Parent.ID = CT.PARENT_ID
)
-- HERE IS YOUR TREE, Depths gives you the level starting with 0 and Sort is the Name based path
SELECT ID, [NAME], PARENT_ID, Depth, Sort FROM Tree
ORDER BY Sort
Usted puede ser mejor crear una función de valor en línea de la tabla que hace esto. Luego puede parametrizar el Parent_Id que le pasa. –
Es mejor hacerlo en una vista, y tal vez agregar el uid raíz principal como una columna, y consultar esa vista desde un procedimiento almacenado. Las funciones con valores de tabla disminuirán cuando tenga muchos datos, ya que crean tablas temporales en la memoria, que se intercambian si la memoria no es suficiente. –