[PHP/MYSQL] Les articles les plus commentés

WRInaute discret
Bonjour :)

Bon voilà je vous avoue que je galère, mais peut-être parce que je suis fatigué...

J'ai deux tables, l'une "articles" et l'autre "commentaires".

Articles : id, titre, contenu
Commentaires : id, id_article, commentaire

Jusque là, pas de problème.

Là où ça se complique : j'aimerais réussir à "sortir" la liste des articles, triées par le nombre de commentaires.

Exemple :
Article 6, "blablabla", 28 commentaires
Article 1, "blobloblo", 12 commentaires
Article 9, "bliblibli", 2 commentaires

Mais je ne vois vraiment pas comment faire tout ça en une seule requête !!

Sélectionner les articles, OK. Pour le nombre de commentaires, il y a la fonction count() de MySQL.

Est-ce que quelqu'un pourrait m'aider ? ;)

Merci d'avance !!
 
WRInaute impliqué
Salut,

Bon, comme ça, sans tester, ça devrait donner un truc du genre :

Code:
SELECT ar.id, ar.titre, ar.contenu, ac.COUNT(*) AS nb_commentaires
FROM articles ar LEFT JOIN articles_commentaires ac ON ar.id_article = ac.id_article
GROUP BY ar.id
ORDER BY nb_commentaires DESC

J'ai mis left join et non inner join, pour tenir compte du cas "aucun commentaire".
 
WRInaute discret
Salut salut ;)

Je te remercie infiniment ! Je vais tester ce soir et je te dirai si c'est OK ;)

Encore merci à toi, bonne fin d'après midi !
 
WRInaute discret
Bonjour ;)

Comme promis, j'ai essayé la requête cette nuit !

Elle marche, aucun problème à signaler mis à part le fait que lorsqu'un article n'a jamais été commenté, MySQL me retourne tout-de-même 1 commentaire.

Je ne comprends vraiment pas pourquoi !

Enfin, ce n'est pas si grave vu que c'est pour mon backoffice :)

Je te remercie infiniment !! :)
 
Discussions similaires
Haut