Une chose importante et souvent réclamé avec les données structurées sous forme arborescentes, est de les voir à la manière d'un arbre... ce qui suppose une indentation des items combinée à un ordre particulier, lors de la restitution des données. Est-ce possible avec SQL ? Oui, bien sûr. Pour réaliser
5 – Indentation hiérarchique

cet ordonnancement des données, nous devons connaître le cheminement dans l’arbre et le niveau du noeud, deux informations qui nous aiderons à rajouter des espaces d’indentation et à trier les lignes du résultat dans le bon ordre.
Il faut donc calculer à la fois le chemin et le niveau, et cela est possible avec la CTE :
WITH tree (data, id, level, pathstr)
AS (SELECT VHC_NAME, VHC_ID, 0, CAST( » AS VARCHAR(MAX))
FROM T_VEHICULE
WHERE VHC_ID_FATHER IS NULL
UNION ALL
SELECT VHC_NAME, VHC_ID, t.level + 1, t.pathstr + V.VHC_NAME
FROM T_VEHICULE V
INNER JOIN tree t ON t.id = V.VHC_ID_FATHER) SELECT SPACE(level) + data as data, id, level, pathstr
FROM tree ORDER BY pathstr, id
data id level pathstr
—————————————————–
ALL 1 0
AIR 4 1 AIR
PLANE 11 2 AIRPLANE
ROCKET 10 2 AIRROCKET
EARTH 3 1 EARTH
CAR 7 2 EARTHCAR
TRUCK 9 2 EARTHTRUCK
TWO WHEELES 8 2 EARTHTWO WHEELES
BYCYCLE 13 3 EARTHTWO WHEELESBYCYCLE
MOTORCYCLE 12 3 EARTHTWO WHEELESMOTORCYCLE
SEA 2 1 SEA
BOAT 6 2 SEABOAT
SUBMARINE 5 2 SEASUBMARINE
Pour réaliser ce tour de force, nous avons utilisé un nouveau type de données introduit avec la version 2005 de SQL Server, le type VARCHAR(max) afin de ne pas limiter la concaténation des points de passage à quelques caractères. En effet, la profondeur d’un arbre peut être importante et dans ce cas la concaténation du nom des étapes peut conduire à saturer une colonne traditionnellement limitée à quelques caractères.
De plus et afin d’éliminer certains effets de bord, nous vous conseillons d’introduire un marqueur entre les noms des différents noeuds, par exemple le caractère "virgule" suivi d’un espace afin de lier les étapes. Cela empêchera de confondre une étape comme MARSALES (24) avec la concaténation de deux autres étapes comme ALES (30) et MARS (07).
Téléchargez cette ressource

Guide de téléphonie d’entreprise avec Teams
Ajouter un onglet téléphonie à Microsoft Teams pour émettre et recevoir des appels depuis n’importe quel terminal connecté. Découvrez dans ce guide pratique, comment bénéficier des avantages de l’offre TeamsPhony pour faire des économies, gagner en agilité et en simplicité avec une offre de téléphonie dans le cloud.