¿Obtener todos los posibles padres en un solo campo?
Tu tarea final en este capítulo es encontrar todos los posibles padres partiendo de un ID y combinar los ID de todas las generaciones encontradas en un solo campo.
Para hacerlo, buscarás de forma recursiva todos los posibles miembros y añadirás esta información a un único campo. Tienes que usar el operador CAST() para combinar los ID en una cadena.
Buscarás a todos los miembros de la familia empezando por ID = 290. En total, hay 300 registros en la tabla family.
Este ejercicio forma parte del curso
Consultas jerárquicas y recursivas en SQL Server
Instrucciones del ejercicio
- Establece el
ParentIDde 290 como punto de partida. - Si
Parent.ID = ''en la operaciónCASE, el campoParentdebe asignarse alParentIDactual. - Si
Parent.ID <> ''en la operaciónCASE, el ID del padre debe añadirse alParentactual en cada iteración. - Selecciona
NameyParentde la CTE definida.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
WITH tree AS (
SELECT
ID,
Name,
ParentID,
CAST('0' AS VARCHAR(MAX)) as Parent
FROM family
-- Initialize the ParentID to 290
WHERE ___ = ___
UNION ALL
SELECT
Next.ID,
Next.Name,
Parent.ID,
CAST(CASE WHEN Parent.ID = ''
-- Set the Parent field to the current ParentID
THEN(CAST(Next.___ AS VARCHAR(MAX)))
-- Add the ParentID to the current Parent in each iteration
ELSE(Parent.Parent + ' -> ' + CAST(Next.___ AS VARCHAR(MAX)))
END AS VARCHAR(MAX))
FROM family AS Next
INNER JOIN tree AS Parent
ON Next.ParentID = Parent.ID)
-- Select the Name, Parent from tree
SELECT ___, ___
FROM ___;