CommencezCommencez gratuitement

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

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 actuel.
  • Si Parent.ID <> '' dans l'instruction CASE, l'ID du parent doit être ajouté au Parent actuel à chaque itération.
  • Sélectionnez Name et Parent à 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 ___;
Modifier et exécuter le code