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
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Data streaming : le nouveau socle stratégique de l’IA en entreprise
- Ransomware en santé : la double extorsion fait exploser la facture en Europe
- Les fuites de données explosent en France, désormais pays le plus touché d’Europe
- L’IA accélère les attaques et expose les identités non gouvernées
Articles les + lus
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
À la une de la chaîne Tech
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
