Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1610 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  probleme avec jointure sur 3 tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec jointure sur 3 tables

n°1404417
krovomi
Posté le 11-07-2006 à 10:45:11  profilanswer
 

Bonjour,
 
Je rencontre actuellement un probleme de jointure sur 3 tables :
 
J'ai 3 tables : Compterendus, contacts et utilisateurs.
Donc dans la table UTILISATEURS, je recupere l'id de l'utilisateur et le code representant de ce dernier (utilisateur_id, utilisateur_coderep)
Je recupere l'id et le code_representant de la table CONTACTS(CONTACT_ID, CONTACT_ID_USER) Je fais ensuite une jointure sur la table CONTACTS via CONTACT_ID_USER(qui est le code representant de l'utilisateur), donc CONTACT_ID_USER = utilisateur_coderep en gros.
là dessus, je joints la table COMPTERENDUS, l'id du compterendu a celui du contact.
 
La requete s'effectue bien mais le problème est qu'elle ne me sort pas les resultats attendus.
 
Mon attente serait : "Je souhaiterai voir tous les messages appartenant à un utilisateur dont le champ(COMPTERENDU_POSTE) est à 0 ou à 1"(cela pour voir si un compte rendu est posté ou en cours de postage).
 
Merci
 
P.S : Je ne sais pas si je m'exprime bien pour ma requete, un peu d'indulgence svp  :D


Message édité par krovomi le 11-07-2006 à 10:58:33
mood
Publicité
Posté le 11-07-2006 à 10:45:11  profilanswer
 

n°1404419
betsamee
Asterisk Zeperyl
Posté le 11-07-2006 à 10:47:11  profilanswer
 

ce serait pas du luxe si tu postais la requete en question

n°1404428
krovomi
Posté le 11-07-2006 à 10:57:51  profilanswer
 

ah oui pardon :)
 
Je savais que j'avais oublié quelque chose :p
 
SELECT U.UTILISATEUR_ID, U.UTILISATEUR_CODEREP FROM UTILISATEURS as U LEFT JOIN UTILISATEURS as U ON U.UTILISATEUR_CODEREP=Co.CONTACT_ID_USER LEFT JOIN COMPTERENDUS AS C WHERE COMPTERENDU_ID=Co.CONTACT_ID ANS COMPTERENDU='0'
 
 
Petite precision : je suis sous MySQL.
 
le probleme aussi que j'ai et que je ne comprends pas est que dans mes resultats attendu il ne me sort pas le champ COMPTERENDU_POSTE(le fameu 0 dans cette requete.
 
Merci ;)

n°1404433
betsamee
Asterisk Zeperyl
Posté le 11-07-2006 à 11:01:56  profilanswer
 

en vrac :
tu as repete 2 fois UTILISATEURS as U au lien de CONTACTS dans ta premiere jointure
tu n'as pas de ON dans ta deuxieme jointure
tu as ecrit ANS au lien de AND
 
en gros ca m'ettoneras que cette requete t'ai rendu quelque chose

n°1404439
krovomi
Posté le 11-07-2006 à 11:08:42  profilanswer
 

bah je l'ai refaite, donc ce n'est pas un copier coller, je te la refais:
SELECT U.UTILISATEUR_ID, U.UTILISATEUR_CODEREP
FROM UTILISATEURS AS U
LEFT JOIN CONTACTS AS Co ON U.UTILISATEUR_CODEREP = Co.CONTACT_ID_USER
LEFT JOIN COMPTERENDUS AS C ON COMPTERENDU_ID = Co.CONTACT_ID
AND C.COMPTERENDU_POSTE = '0'
 
voilà c'est mieux comme ca :)
Bref, il me sort des rusultats comme cela :
 
 Textes complets    
UTILISATEUR_ID        UTILISATEUR_CODEREP
 1                             12
 1                             12
 1                             12
 1                             12
 1                             12
 1                             12
 
donc je pense qu'il faut que je fasse une sous-requete pour voir d'autres champs de la table COMPTERENDUS, non ?

n°1404442
betsamee
Asterisk Zeperyl
Posté le 11-07-2006 à 11:12:35  profilanswer
 

remplaces AND C.COMPTERENDU_POSTE = '0'  par WHERE C.COMPTERENDU_POSTE = '0'

n°1404447
krovomi
Posté le 11-07-2006 à 11:16:13  profilanswer
 

j'ai essayé et il ne me sort aucun resultat alors qu'il devrait m'en sortir 2

n°1404461
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-07-2006 à 11:33:27  profilanswer
 

krovomi a écrit :

donc je pense qu'il faut que je fasse une sous-requete pour voir d'autres champs de la table COMPTERENDUS, non ?


Non que tu mettes les champs dont tu as besoin dans le select [:mlc]
Attention comme tu as un left join, pour certains enregistrements ces champs seront nuls ...
 

betsamee a écrit :

remplaces AND C.COMPTERENDU_POSTE = '0'  par WHERE C.COMPTERENDU_POSTE = '0'


Du coup ça transforme le left outer en inner et ça marche plus :o
 

n°1404475
krovomi
Posté le 11-07-2006 à 11:47:52  profilanswer
 

oui c'est ce que j'ai lu sur la doc de mysql, en effet ca marche, merci ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  probleme avec jointure sur 3 tables

 

Sujets relatifs
probleme de modelisationProblème avec les flux
problème avec TRichEditProblème de rafraichissement d'une liste déroulante
MYSQL : Réparer des tables innodbProblème accent dans requete sql
Probleme avec la fonction DATACHANGED[LOT DTS] Probleme de Demarrage
Problème de texte qui dépasse d'un cadreproblème de jointure avec deux tables avec mysql
Plus de sujets relatifs à : probleme avec jointure sur 3 tables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR