Maintenant que le déclencheur sur insertion génère automatiquement les valeurs des colonnes lvl et hierarchy lorsqu'un utilisateur de la base de données ajoute un employé, la table Employees doit disposer de toutes les informations nécessaires pour répondre aux questions complexes et moins complexes présentées précédemment. On peut par exemple utiliser
Répondre aux questions complexes
la requête suivante pour trouver le nom du responsable
le plus senior de l’entreprise :
SELECT *
FROM Employees
WHERE lvl = 0
On peut utiliser ce type de requête pour trouver l’ensemble des employés d’un
niveau donné, et même exploiter un index sur la colonne lvl pour optimiser les
performances des requêtes.
Pour afficher l’ensemble des employés et leurs dépendances hiérarchiques, exécutez
la requête suivante :
SELECT *
FROM Employees
ORDER BY hierarchy
Voyons maintenant des questions plus complexes. Pour visualiser les détails concernant
Robert (ID employé 7) et ses subalternes à tous les niveaux, exécutez la requête
suivante :
SELECT *
FROM Employees
WHERE hierarchy LIKE (SELECT hierarchy
FROM Employees
WHERE empid = 7) + ‘%’
ORDER BY hierarchy
Pour afficher les détails concernant les subordonnés de Robert (à l’exception
de lui-même) à tous les niveaux, on peut exécuter la requête suivante :
SELECT *
FROM Employees
WHERE hierarchy LIKE (SELECT hierarchy
FROM Employees
WHERE empid = 7) + ‘_%’
ORDER BY hierarchy
A première vue, on peut penser que les deux requêtes précédentes sont identiques,
mais ce n’est pas le cas. On remarquer que la première requête filtre les lignes
correspondant au modèle emp_hierarchy LIKE mgr_hierarchy + ‘%’. Etant donné que
le caractère de substitution, le signe « % », peut représenter zéro ou plusieurs
caractères, la hiérarchie correspond au modèle et fait partie du résultat. Dans
la seconde requête cependant, le modèle est légèrement différent : emp_hierarchy
LIKE mgr_hierarchy + ‘_%’. Le caractère de substitution, le trait de soulignement
(_), remplace un seul caractère inconnu, alors que le signe pour cent (%) remplace
n’importe quel nombre de caractères inconnus, y compris zéro. L’association de
ces symboles requiert l’existence d’au moins un caractère de substitution dans
la hiérarchie de l’employé par rapport à la hiérarchie du manager. Ainsi, les
résultats de la requête ne comprennent par Robert.
La requête suivante renvoie la somme des salaires de Robert et de ses subalternes
à tous les niveaux :
SELECT sum(salary) AS total_salary
FROM Employees
WHERE hierarchy LIKE (SELECT hierarchy
FROM Employees
WHERE empid = 7) + ‘%’
Pour afficher les détails concernant les employés du bas de l’échelle dépendant
de Janet (ID employé 3), on peut exécuter la requête suivante :
SELECT *
FROM Employees AS M
WHERE hierarchy LIKE (SELECT hierarchy
FROM Employees
WHERE empid = 3) + ‘%’
AND NOT EXISTS(SELECT mgrid FROM Employees AS E
WHERE M.empid = E.mgrid)
Et pour afficher les détails concernant l’ensemble des employés deux niveaux sous
Janet, exécutez la requête suivante :
SELECT *
FROM Employees AS M
WHERE hierarchy LIKE (SELECT hierarchy
FROM Employees
WHERE empid = 3) + ‘%’
AND lvl – (SELECT lvl
FROM Employees
WHERE empid = 3) = 2
ou
SELECT *
FROM Employees AS E JOIN Employees AS M
ON E.hierarchy LIKE M.hierarchy + ‘%’
WHERE M.empid = 13
AND E.lvl – M.lvl = 2
Enfin, pour afficher la chaîne hiérarchique menant à James (ID employé 14), on
peut exécuter la requête suivante :
SELECT *
FROM Employees
WHERE (SELECT hierarchy
FROM Employees
WHERE empid = 14) LIKE hierarchy + ‘%’
ORDER BY hierarchy
| Tableau 1 Changement de hiérarchie après le retrait de Michael | ||||
| Employé | Ancien niveau | Nouveau niveau | Ancienne chaîne hiérarchique | Nouvelle chaîne hiérarchique |
| Andrew | 1 | 2 | .1.2. | .1.3.2. |
| Steven | 2 | 3 | .1.2.5. | .1.3.2.5. |
| Michael | 2 | 3 | .1.2.6. | .1.3.2.6. |
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- IA et cybersécurité : les entreprises françaises acceptent plus de risques qu’elles ne savent les contrôler
- Infrastructures critiques : la France redoute les attaques dopées à l’IA, mais peine à unifier sa sécurité IT/OT
- Les Assises 2026 : encore plus d’énergie pour poursuivre le chemin
- Agents IA : arrêtons de leur confier nos secrets
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
