|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : juin 2011 Messages : 13 ![]() |
Bonsoir.
J'essaie depuis un bon moment de faire une jointure assez compliquée. Mes recherches sur internet sont restées infructueuses. J'ai deux tables : alertes_mps et members. La table members, en simplifiée, a les champs mbs_id et mbs_pseudo. La table alertes_mps, en simplifiée, a les champs alertesMps_idMbr, alertesMps_idResolveur. Ces deux id correspondent aux id de la table members. Je veux récupérer les pseudos des deux membres. Voici ma requête qui récupère, entre autres, le pseudo de idMbr (celui qui émet l'alerte). Code :
Cette requête fonctionne très bien en prenant l'id de celui qui émet la requête (idMbr) mais sans prendre le pseudo de celui qui a résolu l'alerte (idResolveur). Si je fais un autre INNER JOIN ça bloque puisque SQL ne saura pas quoi faire. J'espère que vous comprenez mon problème. Merci par avance pour votre aide. Bonne soirée. |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Évite la guerre des étoiles !
Puisque tu as deux membres à associer à tes alertes, il te faut deux jointures sur les membres : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#3 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Je ne sais pas si un INNER JOIN est approprié pour le résolveur, à moins que l'alerte soit émise et résolue lors de l'insertion en table, .
Il serait peut-être judicieux de passer par une jointure externe, ce qui permettrait de récupérer vos tuples même si l'alerte n'a pas encore été résolue... A vous de voir en fonction de votre expression de besoins et de vos règles fonctionnelles. Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#4 | |||
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : juin 2011 Messages : 13 ![]() |
Merci à vous deux de prendre le temps de m'expliquer tout ça.
@CinePhil : j'ai testé ce que tu me proposes (en fait je l'avais déjà testé). Mais le problème c'est que je ne sais pas comment prendre le pseudo. Comment MySQL comprendra que le premier pseudo que je prends est celui de l'auteur de l'alerte et que le deuxième est celui du "résolveur". Comme j'écris $var['mbs_pseudo'] à ce moment là il ne sait pas lequel prendre ? Ma solution est la suivante : Code :
Citation:
Edit : j'ai essayé en faisant une jointure externe (LEFT JOIN) et ça ne fonctionne pas non plus. |
|||
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : juin 2011 Messages : 13 ![]() |
Vous ne voyez pas d'où vient le problème ?
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Boris Étudiant Inscription : juin 2011 Messages : 13 ![]() |
Je sais. Sauf que cette requête ne retourne aucun résultats. Alors que si j'enlève le deuxième INNER JOIN sur la table members ça marche parfaitement (à l'exception que je ne récupère pas les deux pseudos...).
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com