ComeçarComece de graça

Obter todos os possíveis pais em um único campo?

Sua tarefa final neste capítulo é encontrar todos os possíveis pais a partir de um ID e combinar os IDs de todas as gerações encontradas em um único campo.

Para isso, você vai buscar recursivamente todos os possíveis membros e adicionar essas informações a um único campo. Você precisa usar o operador CAST() para combinar IDs em uma string. Você pesquisará todos os membros da família começando de ID = 290. No total, existem 300 registros na tabela family.

Este exercício faz parte do curso

Consultas Hierárquicas e Recursivas no SQL Server

Ver curso

Instruções do exercício

  • Defina o ParentID de 290 como ponto de partida.
  • Se Parent.ID = '' na operação CASE, o campo Parent precisa ser definido como o ParentID atual.
  • Se Parent.ID <> '' na operação CASE, o ID do pai precisa ser adicionado ao Parent atual a cada iteração.
  • Selecione Name e Parent da CTE definida.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código