SQL requete Lister " un patron , d'un patron

Gex936 Messages postés 3 Statut Membre -  
Gex936 Messages postés 3 Statut Membre -
Bonjour,

voilà je me viens mettre ma question sur le forum car j'ai beau rechercher... Je désespère.

J'ai une table EMPLOYES dans laquelle se trouve :
NumSecu(CP)
Nom,
NumChef ( référence à un numSecu)

On demande d'afficher le nom d'un employé ainsi que le nom de ses 3 chefs directs. Cette recherche des 3 chefs directs se fait par UNE seule Requete SQL

Comme exemple j'ai ARTHUR qui n'a qu'un chef, ROBERT qui en a 2 , CESAR qui en a 3 et LAURE qui n'a pas de chef

ARTHUR chef LAURE
ROBERT chef ARTHUR chef LAURE
CESAR chef ROBERT chef ARTHUR chef LAURE
LAURE ( sans chef)

Avez vous une idée concernant la requête ? Ceci dois être intégré dans un package PL/SQL avec comme entrée le nom d'un employé.

J'ai testé ceci qui me donne bien la réponse quand la personne où il y a le plus de patron mais si je change CESAR par un autre. Je n'obtiens plus rien

SELECT A.nom, B.nom, C.nom, D.nom
FROM employes A, employes B, employes C, employes D
WHERE c.numchef = D.numsecu
AND c.numchef IN(SELECT numchef
FROM employes
WHERE b.numchef = C.numsecu
AND b.numchef IN(SELECT numchef
FROM employes
WHERE A.numchef = B.numsecu
AND A.numchef IN(SELECT numchef
FROM employes
WHERE nom ='CESAR ')))

En vous remerciant.

2 réponses

mpmp93 Messages postés 7217 Date d'inscription   Statut Membre Dernière intervention   1 341
 
Bonjour,

Faut pas rêver... CITE: Cette recherche des 3 chefs directs se fait par UNE seule Requete SQL ...

SQL sait pas tout faire en une seule passe.

Je vous suggère de faire une fonction qui itère une requête SQL tant que employé a un patron. Cette fonction restitue la séquence de recherche.

function getPatronDeEmploye($codeEmploye) {
...ici code recherche patron...
si patron trouvé -> return code patron
si patron pas trouvé -> return false
}

ensuite, vous initialisez un tableau:

var $outDatas = array();

enfin vous faites une boucle while de ce genre:

while($patron = getPatronDeEmploye($employe)) {
$outDatas[] = $patron;
$employe = $patron;
}

Enfin, quand vous ferez:

print_r($outdatas);

vous aurez l'enchaînement des patrons

C'est comme ça que je vois les choses....

A+
0
Gex936 Messages postés 3 Statut Membre
 
Je vous remercie , je vais tenter de faire cela en adaptant au package , en mettant une autre requete et faire un tableau en sortie .
0
Gex936 Messages postés 3 Statut Membre
 
Alors , je relance l'aide ...
J'ai eu confirmation que ça doit être une seule requête qui s'adapte aux nombres de chef direct de la personne recherchée sans intervention de PL SQL ...

?_?
0