Aide pour une jointure

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aide pour une jointure

Re: Aide pour une jointure

par Ryle » 29 juin 2015, 11:43

Hello !

Je suis étonné que la condition "WHERE N.pseudo=A.id_membre" te retourne quelque chose :)

Pour les jointures, je te recommandes de mettre les conditions de jointures dans la liste des tables (FROM xxx JOIN yyy ON zzz) et de conserver le WHERE pour les critères de filtre des résultats.

Par contre je ne vois absolument pas de lien entre ta table notification et les autres, à moins que ta clé étrangère ne soit le pseudo du membre ?
Quelque chose comme ça ?
$sql = 'SELECT N.id, N.pseudo, N.titre, N.cible_action, DATE_FORMAT(N.date, '%d/%m/%Y à %Hh%imin') AS date
   , M.id, M.pseudo, M.avatar
   , A.id, A.id_posteur, A.id_membre 
FROM abonnement_membre A 
   JOIN membres M ON A.id_membre_suivi = M.id
   JOIN notification N ON M.pseudo = N.pseudo
WHERE A.id_posteur = ' . $id_member . '
ORDER BY N.date DESC 
LIMIT 0,10'

Nota : le mot clé "DATE" est un mot clé réservé du langage SQL il ne devrait pas être utilisé pour nommer une colonne ou servir d'alias. MySQL le tolère, ce n'est pas le cas des autres bases de données :)

Aide pour une jointure

par Larker » 27 juin 2015, 18:49

Bonjour,

Je suis actuellement en train de créer un fil d'actualité en fonction des membres qui se sont abonnés aux autres membres et j'aimerais afficher le fil d'actualité des membres que l'on suit.
Il y a en tout 3 tables : Membres, Notification, abonnement_membre.

Malheureusement je ne parviens pas au résultat escompté et je ne vois pas d’où viens mon erreur...
Voici mes différentes tables :
=>Table membres
-id
-pseudo
-motdepasse
...
=>Table notification
-id
-pseudo
-titre (ex: suit maintenant le membre)
-action
-date
=>Table abonnement_membre
-id
-id_posteur
-id_membre_suivi
-date

Voici ma tentative mais ça me donne des notifications de membres au hasard j'ai l'impression et pas des membres que je suit.
$id_member = $_SESSION['id'];
$getNewsQuery = $bdd->query("SELECT N.id, N.pseudo, N.titre, N.cible_action, DATE_FORMAT(N.date, '%d/%m/%Y à %Hh%imin') AS date, M.id, M.pseudo, M.avatar, A.id, A.id_posteur, A.id_membre FROM notification N, membres M, abonnement_membre A WHERE N.pseudo=A.id_membre AND A.id_posteur=$id_member ORDER BY N.date DESC LIMIT 0,10");
while($getNews = $getNewsQuery->fetch())
Merci à ceux qui pourront m'aider. ;)