par
enneite » 28 juin 2009, 22:15
Pour les requêtes mysql, en règle générale, il vaut mieux les tester directement dans mysql avant d'envisager de les faire correspondre à un code PHP si elles sont compliquées.
As-tu vraiment besoin du left join? un simple join ne suffirait-il pas?
En faisant un left join, tu assures la jointure meme si la seconde table n'a aucune valeur à associer à la première.
Dans ton cas c'est que en gros MYSQL ne trouve pas de connexion.id qui correspond à un post_creator, donc il te mets tout en null (avec la requête d'exemple cidessus, s'il ne trouve rien il ne te retournera aucune ligne)
ces colonnes représentent elles vraiment la même donnée?
(faut pas remplacer
id par
pseudo par exemple??)
Parce que la en gros il ne trouve rien qui puisse faire correspondre test
post_creator à tes
id
essaie peut être une requête plus simple directement dans mysql avant d'aller plus loin
SELECT post_id , post_createur , post_texte
, connexion.id
FROM forum_post JOIN connexion ON connexion.id = forum_post.post_createur
WHERE topic_id =1
ORDER BY post_id
LIMIT 1,10
et trafiquote la un peu pour que ça marche (parce que la normalement en toute logique il ne t'affichera rien)
NB :
(normalement pour une requete joignant les données d'un message de forum aux données concernant le membre qui l'a posté, tu n'a pas besoin du left join car tu es censé trouvé tjs au moins une valeur non nulle dans la table qui recense les données du membre, donc un join simple devrait suffire...)
sinon si tu tiens à garder le left join, essaie en inversant l'égalité:
SELECT post_id , post_createur , post_texte , post_time , id , pseudo , inscrit , avatar , localisation , post , signature
FROM forum_post
LEFT JOIN connexion ON forum_post.post_createur =connexion.id
WHERE topic_id ="'.$topic.'"
ORDER BY post_id
LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage . ''
peut être faut-il garder le bon ordre, ce serait mais là je n'en suis pas sur du tout...
Pour les requêtes mysql, en règle générale, il vaut mieux les tester directement dans mysql avant d'envisager de les faire correspondre à un code PHP si elles sont compliquées.
As-tu vraiment besoin du left join? un simple join ne suffirait-il pas?
En faisant un left join, tu assures la jointure meme si la seconde table n'a aucune valeur à associer à la première.
Dans ton cas c'est que en gros MYSQL ne trouve pas de connexion.id qui correspond à un post_creator, donc il te mets tout en null (avec la requête d'exemple cidessus, s'il ne trouve rien il ne te retournera aucune ligne)
[b]ces colonnes représentent elles vraiment la même donnée?[/b]
(faut pas remplacer [b]id[/b] par [b]pseudo[/b] par exemple??)
Parce que la en gros il ne trouve rien qui puisse faire correspondre test [b]post_creator[/b] à tes [b]id[/b]
essaie peut être une requête plus simple directement dans mysql avant d'aller plus loin
[quote]SELECT post_id , post_createur , post_texte
, connexion.id
FROM forum_post JOIN connexion ON connexion.id = forum_post.post_createur
WHERE topic_id =1
ORDER BY post_id
LIMIT 1,10[/quote]
et trafiquote la un peu pour que ça marche (parce que la normalement en toute logique il ne t'affichera rien)
NB :
(normalement pour une requete joignant les données d'un message de forum aux données concernant le membre qui l'a posté, tu n'a pas besoin du left join car tu es censé trouvé tjs au moins une valeur non nulle dans la table qui recense les données du membre, donc un join simple devrait suffire...)
sinon si tu tiens à garder le left join, essaie en inversant l'égalité:
[quote]SELECT post_id , post_createur , post_texte , post_time , id , pseudo , inscrit , avatar , localisation , post , signature
FROM forum_post
LEFT JOIN connexion ON [b]forum_post.post_createur =connexion.id[/b]
WHERE topic_id ="'.$topic.'"
ORDER BY post_id
LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage . ''[/quote]
peut être faut-il garder le bon ordre, ce serait mais là je n'en suis pas sur du tout...