ComenzarEmpieza gratis

¿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

Ver curso

Instrucciones del ejercicio

  • Establece el ParentID de 290 como punto de partida.
  • Si Parent.ID = '' en la operación CASE, el campo Parent debe asignarse al ParentID actual.
  • Si Parent.ID <> '' en la operación CASE, el ID del padre debe añadirse al Parent actual en cada iteración.
  • Selecciona Name y Parent de 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 ___;
Editar y ejecutar código