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

État des lieux de la réponse à incident de cybersécurité
Les experts de Palo Alto Networks, Unit 42 et Forrester Research livrent dans ce webinaire exclusif leurs éclairages et stratégies en matière de réponses aux incidents. Bénéficiez d'un panorama complet du paysage actuel de la réponse aux incidents et de sa relation avec la continuité de l'activité, des défis auxquels font face les entreprises et des tendances majeures qui modèlent ce domaine. Un état des lieux précieux pour les décideurs et professionnels IT.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Reporting RSE : un levier d’innovation !
- De la 5G à la 6G : la France se positionne pour dominer les réseaux du futur
- Datanexions, acteur clé de la transformation numérique data-centric
- Les PME attendent un meilleur accès aux données d’émissions de la part des fournisseurs
- Fraude & IA : Dr Jekyll vs. Mr Hyde, qui l’emporte ?
