Je supppose les points suivants exacts :
- la table SERVICE est en fait définie comme SERVICE (SER_ID, SER_LIB)(et non SERVICE (SER_ID, SER_ID) comme indiqué initialement)
- la table SERSAL (SESA_SAL, SESA_SER) est une table de relation entre SERVICE et SALARIE, où SESA_SAL référence SAL_ID de SALARIE et SESA_SER référence SER_ID de SERVICE.
Si ce n'est pas le cas tant pis, il fallait être plus précis
Dans le cas où mes suppositions sont exactes, la requête suivante devrait répondre à ton besoin :
Select SAL_LIB, SER_LIB
from SALARIE, SERVICE, SERSAL
where SALARIE.SAL_ID = SERSAL.SAL_ID
and SERVICE.SER_ID = SERSAL.SER_ID;
Cette requête te renvoie la liste de TOUS les salariés avec le(s) service(s) correspondant(s). Si tu veux connaître le renseignement pour un salarié donné (SAL_ID = XXX), la requête devient :
Select SAL_LIB, SER_LIB
from SALARIE, SERVICE, SERSAL
where SALARIE.SAL_ID = SERSAL.SAL_ID
and SERVICE.SER_ID = SERSAL.SER_ID
and SAL_ID = XXX;
Pas besoin de requête imbriquée ou de IN , deux jointures suffisent.
Il vaut mieux d'ailleurs éviter les requêtes imbriquées ou les IN quand on peut, car ces éléments sont très gourmands en ressources (bon là évidemment ça ne se voit pas mais sur des tables avec quelques centaines de milliers de lignes, on voit la différence !)
[jfdsdjhfuetppo]--Message édité par irulan--[/jfdsdjhfuetppo]