Rassembler tous les parents possibles dans un seul champ
Votre dernière tâche dans ce chapitre consiste à trouver tous les parents possibles à partir d’un ID donné et à combiner les ID de toutes les générations trouvées dans un seul champ.
Pour cela, vous allez rechercher de manière récursive tous les membres possibles et ajouter ces informations dans un champ. Vous devez utiliser l’opérateur CAST() pour concaténer les ID en une chaîne de caractères.
Vous rechercherez tous les membres de la famille en partant de ID = 290. Au total, il y a 300 enregistrements dans la table family.
Cet exercice fait partie du cours
<cours>Requêtes hiérarchiques et récursives dans SQL Server</cours>Instructions de l’exercice
- Définissez
ParentIDde 290 comme point de départ. - Si
Parent.ID = ''dans l’instructionCASE, le champParentdoit être défini sur leParentIDcourant. - Si
Parent.ID <> ''dans l’instructionCASE, l’ID parent doit être ajouté à la valeur actuelle deParentà chaque itération. - Sélectionnez
NameetParentdepuis la CTE définie.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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 ___;