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
Instruções do exercício
- Defina o
ParentIDde 290 como ponto de partida. - Se
Parent.ID = ''na operaçãoCASE, o campoParentprecisa ser definido como oParentIDatual. - Se
Parent.ID <> ''na operaçãoCASE, o ID do pai precisa ser adicionado aoParentatual a cada iteração. - Selecione
NameeParentda 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 ___;