[MySQL] Requête avec jointure qui passe pas

Répondre
mobman02
le 27/01/2007 à 11:29
mobman02
Bonjour,
j'ai un chtit problème,
j'essaye d'optimiser mon site depuis que j'ai découvert les jointure (heu, depuis avant hier quoi :D),

dans ce cas la, il s'agit de l'affichage des news.

Avant j'avais une requête qui chargeait toutes les news,
puis une requête par news pour compter le nombre de commentaires.

Je cherche à faire tout ça en une seule requête :

SELECT 
a.id_news,
a.titre,
a.date_news,
a.texte,
a.texte2,
a.auteur,
a.validation,
a.id_news,
count(b.id_comment)
FROM news a
LEFT JOIN commentaires b
ON a.id_news = b.id_news
GROUP BY a.id_news
WHERE a.validation = 1
ORDER BY a.date_news DESC
LIMIT 0 , 5


Mais MySQL me renvoi cette erreur :
Erreur de syntaxe près de 'WHERE a.validation = 1
ORDER BY a.date_news DESC
LIMIT 0 , 5' à la ligne 15

Je pense que le problème vient du GROUP BY (dont je ne saisie pas bien l'utilité),
si je le retire MySQL me dit ça :
Mélanger les colonnes GROUP (MIN(),MAX(),COUNT()...) avec des colonnes normales est interdit s'il n'y a pas de clause GROUP BY


Voilà vous savez tout ^^
J'espère que vous pourrez m'aider :)

Bye et merci d'avance.
http://damienalexandre.fr/
mobman02
le 27/01/2007 à 13:06
mobman02
Résolu,
problème de placement du GROUP BY...

SELECT
a.id_news,
a.titre,
a.date_news,
a.texte,
a.texte2,
a.auteur,
a.validation,
a.id_news,
b.id_news as id_news_comment,
count(b.id_comment) as nb_comment
FROM ".$table_news." a
LEFT JOIN ".$table_comentaire." b
ON a.id_news = b.id_news
WHERE a.validation = 1
GROUP BY a.id_news
ORDER BY a.date_news DESC
LIMIT ".$debut_news." , ".$end_news."
http://damienalexandre.fr/
zebden
le 27/01/2007 à 16:14
zebden
ET t'as le bon nombre de commentaires ?

Pour le GROUP BY, j'aurais plutôt mis b.id_news que l'identifiant de la table a.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours