2011-07-08 5 views
0

J'ai un problème (ce que j'espère être facile) avec une requête MySQL.MySQL Sort Query

J'ai 2 tables: articles, commentaires

Un article peut avoir de nombreux commentaires donc il y a un étranger de article_id dans le tableau des commentaires.

Je veux obtenir tous les articles et tout en boucle les montrer sur la page, puis obtenir tous les commentaires comptent pour chaque article. Facile, c'est fait. Maintenant, le problème est que je veux trier les résultats en fonction du nombre de commentaires, mais toujours montrer les résultats de la même manière.

Donc, fondamentalement, je veux:

SELECT * 
FROM tbl_articles 
JOIN tbl_comments 
ORDER BY (the most comments); 

J'espère que cela peut être fait en une seule requête que toute requête est de construire dynamiquement à partir de plusieurs ensembles de cases où une seule requête pourrait ressembler à:

SELECT * 
FROM tbl_articles 
WHERE subject IN (1,2,5) 
    AND medium IN (1,3) 
    AND date_active > NOW() 
    AND... 

Toute autre information que je suis heureux de fournir.

Répondre

0

Quelque chose comme ...

SELECT *, COUNT(tbl_comments.id) as comments_count 
FROM tbl_articles JOIN tbl_comments ON (tbl_comments.article_id = tbl_articles.id) 
GROUP BY tbl_comments.article_id 
ORDER BY comments_count; 
+0

Parfait. Merci beaucoup! – puks1978