CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

  • Définissez ParentID de 290 comme point de départ.
  • Si Parent.ID = '' dans l’instruction CASE, le champ Parent doit être défini sur le ParentID courant.
  • Si Parent.ID <> '' dans l’instruction CASE, l’ID parent doit être ajouté à la valeur actuelle de Parent à chaque itération.
  • Sélectionnez Name et Parent depuis 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 ___;
Modifier et exécuter le code