13
Puedo encontrar todos los elementos secundarios de un registro determinado en un modelo de datos jerárquico (vea el código a continuación), pero no estoy seguro de cómo hacer una copia de seguridad de la cadena principal/secundaria con una identificación infantil dada. ¿Alguien puede señalarme en la dirección correcta para descubrir cómo hacer esto? ¿Es esto posible en Linq para SQL también?CTE para realizar una copia de seguridad de una jerarquía?
WITH TaskHierarchy (TaskID, [Subject], ParentID, HierarchyLevel, HierarchyPath) AS
(
-- Base case
SELECT
TaskID,
[Subject],
ParentID,
1 as HierarchyLevel,
CONVERT(VARCHAR(MAX),'/') AS HierarchyPath
FROM Task
WHERE TaskID = 2
UNION ALL
-- Recursive step
SELECT
t.TaskID,
t.Subject,
t.ParentID,
th.HierarchyLevel + 1 AS HierarchyLevel,
CONVERT(varchar(MAX),th.HierarchyPath + CONVERT(VARCHAR(32),t.ParentID) + '/') AS HierarchyPath
FROM Task t
INNER JOIN TaskHierarchy th ON
t.ParentID = th.TaskID
)
SELECT *
FROM TaskHierarchy
ORDER BY HierarchyLevel, [Subject]
Gracias por publicar su solución! Me ha ahorrado horas! –