2 pièce(s) jointe(s)
Jointure et problème de sélection avec le WHERE
Bonjour,
J'ai une table qui comporte des messages, chaque enregistrements à un id expéditeur ainsi qu'un id destinataire.
Dans la table il peut donc y avoir plusieurs messages qui comporte le même expéditeur et le même destinataire si par exemple le membre 1 envoie 3 messages au membre 2 alors il y aura :
id_expediteur / id_destinataire
1 / 2
1 / 2
1 / 2
donc 3 messages.
le problème c'est que je suis en train de faire une boite de réception avec la liste des correspondants mais actuellement ma requête affiche justement l'ensemble des messages! je veux que ma requête "regroupe" les même id destinataire et expéditeur et affiche le pseudo du correspondant via une jointure. Je ne sais pas si j'ai été précis dans mon histoire ? :?
voici une image de mes enregistrements de ma table messages
Pièce jointe 200080
maintenant disons que je suis le membre avec l'id 1 (pseudo demo)
la photo affiche actuellement :
Pièce jointe 200081
Alors que j'attends un affichage de seulement 2 lignes car dans la photo phpmyadmin le membre 1 parle avec seulement 2 membres et pas 5 ! voila mon problème. Pas évident pour l'expliquer, je vous remercie pour votre aide :calim2: je pense qu'il faut modifier le where mais je ne sais pas comment :/
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $user_id = $_SESSION['auth']->id;
$reponse = $pdo->prepare("SELECT
u.id id_correspondant,
u.username pseudo_correspondant,
m.id id_msg,
m.id_expediteur id_exp,
m.id_destinataire id_des,
m.date_envoi date_msg
FROM users u
INNER JOIN messages m
ON m.id_expediteur = u.id
WHERE m.id_expediteur = $user_id OR m.id_destinataire = $user_id
ORDER BY m.date_envoi DESC
LIMIT 0, 20"); |