> Tech > 5 – Indentation hiérarchique

5 – Indentation hiérarchique

Tech - Par iTPro - Publié le 24 juin 2010
email

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 gratuitement cette ressource

Sécurité Office 365 : 5 erreurs à ne pas commettre

Sécurité Office 365 : 5 erreurs à ne pas commettre

A l’heure où les données des solutions Microsoft de Digital Workplace sont devenues indispensables au bon fonctionnement de l’entreprise, êtes-vous certain de pouvoir compter sur votre plan de sécurité des données et de sauvegarde des identités Microsoft 365, Exchange et Teams ? Découvrez les 5 erreurs à ne pas commettre et les bonnes pratiques recommandées par les Experts DIB France.

Tech - Par iTPro - Publié le 24 juin 2010