Obtenir 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 et à combiner les ID de toutes les générations repérées dans un seul champ.
Pour ce faire, vous allez rechercher récursivement tous les membres possibles et ajouter cette information dans un même champ. Vous devez utiliser l'opérateur CAST() pour combiner des ID en une chaîne de caractères.
Vous allez rechercher tous les membres de la famille à partir de ID = 290. Il y a au total 300 entrées dans la table family.
Cette activité fait partie du cours
Requêtes hiérarchiques et récursives dans SQL Server
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 leParentIDactuel. - Si
Parent.ID <> ''dans l'instructionCASE, l'ID du parent doit être ajouté auParentactuel à chaque itération. - Sélectionnez
NameetParentà partir de 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 ___;