Soucis avec LEFT JOIN

Résolu/Fermé
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 25 sept. 2018 à 00:43
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 25 sept. 2018 à 10:21
Bonjour à tous !

Je galère un peu avec LEFT JOIN et sollicite votre aide.

Je suis entrain de faire une sorte d'échange sur mon site, un peu comme le principe de CCM (inbox)
L'auteur, l'intervenant en y ajoutant les images de profil.

J'ai fouillé un peu partout mais je n'ai pas pu avoir un résultat satisfaisant... voir même pas grand chose.
J'arrive à trouver le NIC_Handle de l'auteur, mais celui de l'intervenant, je chôme grave.

Voici mon code :
<?php try{
$MyPDO=$pdo->query("
SELECT 
			tb_user_messages_recap.Auteur,
			tb_user_messages_recap.Intervenant,
			tb_user_messages_recap.Numero,
			tb_user_messages_recap.Sujet,
			tb_user_messages_recap.Creation,
			tb_user_messages_recap.Edition,
			tb_user_messages_recap.Etat,
			tb_user.NIC_Handle,
			tb_user.Pseudo

FROM 		tb_user_messages_recap

LEFT JOIN 	tb_user ON tb_user.Pseudo = tb_user_messages_recap.Auteur OR 
			tb_user.Pseudo = tb_user_messages_recap.Intervenant
AND (  
			tb_user_messages_recap.Auteur='".$_SESSION_PSEUDO."' OR 
	  		tb_user_messages_recap.Intervenant='".$_SESSION_PSEUDO."' )

GROUP BY 
			tb_user_messages_recap.Auteur,
			tb_user_messages_recap.Intervenant,
			tb_user_messages_recap.Numero,
			tb_user_messages_recap.Sujet,
			tb_user_messages_recap.Creation,
			tb_user_messages_recap.Edition,
			tb_user_messages_recap.Etat,
			tb_user.NIC_Handle,
			tb_user.Pseudo

ORDER BY tb_user_messages_recap.Edition DESC
");
    while($data=$MyPDO->fetch(PDO::FETCH_ASSOC))
    {
?>
 
<?php echo $data["NIC_Handle"]." - ".$data["Auteur"]; ?>
<?php echo $data["NIC_Handle"]." - ".$data["Intervenant"]; ?>
 
<?php }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} ?>


Sachant que dans ma table tb_user, chaque Pseudo est lié à son NIC_Handle, tb_user_messages_recap (Auteur, Intervenant) doivent tous les deux avoir leur NIC_Handle depuis tb_user.

Ce code duplique mes enregistrements et n'attribue pas le NIC_Handle à chaque utilisateur.

J'ai besoin d'aide et de conseils.
Merci d'avance !

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
25 sept. 2018 à 07:11
Im faut faire deux LEFT JOIN
Un pour l'auteur et un pour l'autre
1
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
25 sept. 2018 à 10:05
SELECT 
      R.Auteur,
			R.Intervenant,
			R.Numero,
			R.Sujet,
			R.Creation,
			R.Edition,
			R.Etat,
			U.NIC_Handle as NIC_Auteur,
			U.Pseudo as Pseudo_Auteur,
                        U2.NIC_Handle as NIC_Intervenant,
			U2.Pseudo as Pseudo_Intervenant
FROM 	tb_user_messages_recap R
LEFT JOIN 	tb_user  U ON U.Pseudo = R.Auteur 
LEFT JOIN 	tb_user  U2 ON	U2.Pseudo = R.Intervenant
WHERE	R.Auteur='".$_SESSION_PSEUDO."' 
  OR 	R.Intervenant='".$_SESSION_PSEUDO."' 


NB: Comme tu peux le voir j'ai utilisé des ALIAS pour le nom des tables..... c'est tellement plus simple ensuite.. non ??!
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
25 sept. 2018 à 10:21
J'ai encore du boulot avec les jointures ça c'est sûr et certain !
Oui en effet, les alias sont d'une simplicité !
Je me suis dis comprendre d'abord le principe et ensuite m'adapter aux alias... mais je crois que tu as raison !

Encore merci pour ton aide ! vraiment !
0