Requette Sql - SQL/NoSQL - Programmation
Marsh Posté le 10-04-2002 à 18:54:01
BreizhynGd a écrit a écrit : J'ai une petite requete à faire: 3 tables SALARIE (SAL_ID, SAL_LIB) SERVICE (SER_ID, SER_ID) SERSAL (SESA_SAL, SESA_SER) un salarie peut appartenir à 1 ou plusieurs services Je connais le SAL_ID, et je veux lister ts les libéllés des services appartenant au salarié.. Merci |
SELECT SAL_LIB FROM SALARIE WHERE SAL_ID = 'what u want' ;
Marsh Posté le 10-04-2002 à 18:56:01
je crois que tu n'as pas bien lu...
je veux la listes des services, pas la liste des salariés!! (trop simple! )
[jfdsdjhfuetppo]--Message édité par BreizhynGd--[/jfdsdjhfuetppo]
Marsh Posté le 10-04-2002 à 18:57:09
BreizhynGd a écrit a écrit : je crois que tu n'as pas bien lu... je veux la listes des services, pas la liste des salariés!! |
dans SERVICE t'as une clé etrangere ,???
[jfdsdjhfuetppo]--Message édité par raph93--[/jfdsdjhfuetppo]
Marsh Posté le 10-04-2002 à 18:57:58
select ser_lib from service where ser_id in (select sesa_ser from sersal where sesa_sal="what u want" )
Marsh Posté le 10-04-2002 à 19:01:59
raph93 a écrit a écrit : dans SERVICE t'as une clé etrangere ,??? |
non, pas dans service, vu que que plusiers salariés peuvent avoir le meme service
HappyHarry, je vais essayer cela... je tiens au courant
[jfdsdjhfuetppo]--Message édité par BreizhynGd--[/jfdsdjhfuetppo]
Marsh Posté le 10-04-2002 à 19:51:20
j'espere juste uque la bdd n'est pas mysql, pask'il ne supporte pas les requetes imbriquées
si tu veux chercher les libelles des services d'apres le nom de l'employe, il faut ajouter un niveau d'imbrication supplémentaire
Marsh Posté le 10-04-2002 à 20:18:59
non, c'est du VB. J'ai pas encore essayé (j'arrive chez moi )... j'essaie...
Marsh Posté le 10-04-2002 à 20:19:33
je parle pas du langage de prog, mais de la base de donnée que tu utilises, m'enfin ...
Marsh Posté le 10-04-2002 à 20:53:40
oui, scuse...
Access
de toute façons, çà passe par l'obdc...
(j'ai oublié la base à l'école j'essaie demain donc! )
[jfdsdjhfuetppo]--Message édité par BreizhynGd--[/jfdsdjhfuetppo]
Marsh Posté le 11-04-2002 à 09:53:22
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]
Marsh Posté le 11-04-2002 à 10:18:53
BreizhynGd a écrit a écrit : J'ai une petite requete à faire: 3 tables SALARIE (SAL_ID, SAL_LIB) SERVICE (SER_ID, SER_ID) SERSAL (SESA_SAL, SESA_SER) un salarie peut appartenir à 1 ou plusieurs services Je connais le SAL_ID, et je veux lister ts les libéllés des services appartenant au salarié.. Merci |
Ya UNE ERREUR DANS LA TABLE SERVICE !!!
OUUUUUU LA HONTE : 0 SUR 20 !
Marsh Posté le 11-04-2002 à 17:16:05
SALARIE (SAL_ID, SAL_LIB)
SERVICE (SER_ID, SER_LIB)
SERSAL (SESA_SAL, SESA_SER)
j'ai essayé les requete avec les jointures, elles ne fonctionnaient pas. Je retente ce soir... en essayant les 2 méthodes...
Marsh Posté le 11-04-2002 à 18:54:24
BreizhynGd a écrit a écrit : SALARIE (SAL_ID, SAL_LIB) SERVICE (SER_ID, SER_LIB) SERSAL (SESA_SAL, SESA_SER) j'ai essayé les requete avec les jointures, elles ne fonctionnaient pas. Je retente ce soir... en essayant les 2 méthodes... |
marchait pas la mienne
Marsh Posté le 11-04-2002 à 20:33:13
j'ai pas encore essayé... En fait, ma disquette comporte un secteur défectueux..
je tiens au courant lundi...
Marsh Posté le 11-04-2002 à 20:36:31
la table SERSAL est une table d association entre SALARIE et SERVICE donc je ne vois pas le probleme
Select SER_LIB
FROM SERVICE, SERSAL
WHERE SER_ID = SESA_SER
AND SESA_SAL = "L id du salarie"
Si bien evidement SESA_SAL represente la cle primaire de la table SALARIE (ie l identifiant du salarie) et SESAR_SER represente la cle primaire de la table service (ie identifiant du service)
Youpla
Marsh Posté le 11-04-2002 à 20:37:14
Youpla a écrit a écrit : la table SERSAL est une table d association entre SALARIE et SERVICE donc je ne vois pas le probleme Select SER_LIB FROM SERVICE, SERSAL WHERE SER_ID = SESA_SER AND SESA_SAL = "L id du salarie"; Si bien evidement SESA_SAL represente la cle primaire de la table SALARIE (ie l identifiant du salarie) et SESAR_SER represente la cle primaire de la table service (ie identifiant du service) Youpla |
Marsh Posté le 11-04-2002 à 22:55:17
Oups je n'avais pas intégré que tu ne voulais que le nom des services, pour un SAL_ID donné.
Dans ce cas de figure, c'est la requête de Youpla qui est la plus pertinente.
Marsh Posté le 13-04-2002 à 19:59:24
Happy Harry => çà marche, Youpla aussi...
Cependant, pour mieux vous expliquer le pb, c'ets juste mon recordset qui se faisait remplir 5 lignes plus bas J'avais fait comme Youpla au départ mais bon... çà m'apprendra à pas regarder partout...
Merci à Tous
Marsh Posté le 10-04-2002 à 18:46:09
J'ai une petite requete à faire:
3 tables
SALARIE (SAL_ID, SAL_LIB)
SERVICE (SER_ID, SER_ID)
SERSAL (SESA_SAL, SESA_SER)
un salarie peut appartenir à 1 ou plusieurs services
Je connais le SAL_ID, et je veux lister ts les libéllés des services appartenant au salarié..
Merci
[jfdsdjhfuetppo]--Message édité par BreizhynGd--[/jfdsdjhfuetppo]