SQL requete Lister " un patron , d'un patron
Gex936
Messages postés
3
Statut
Membre
-
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.
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.
A voir également:
- SQL requete Lister " un patron , d'un patron
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Comment agrandir un patron à la photocopieuse - Forum Windows
- Lister les disques cmd - Guide
- Sql lister les tables ✓ - Forum Programmation
2 réponses
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+
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+
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 .