2012-05-04 14 views
0

基本上,运行的行数的SQL查询和排序从另一个表

我有两个表,一个有一些岗位上,另一征求意见,我所要做的是创建一个页面与最热门的帖子,我会根据它有多少评论来渲染热门帖子。

这里是我到目前为止

mysql_query("SELECT * FROM posts JOIN comments ON posts.id = comments.content_id ORDER BY count('comments.id') LIMIT 10"); 

但伯爵()查询是搞乱起来,任何人都可以帮助我吗?谢谢!

+0

是错误被返回,还是它只是不工作? – Bryan

+0

没有错误,只是没有工作。 – Frank

+0

我自己修复了它,对不起,我需要在查询中添加GROUP BY功能 – Frank

回答

3

如果你有一个聚合函数,如COUNT(*),你应该包括一个GROUP BY条款:

而且,因为您想要返回评论最多的帖子,您需要按降序排列(从最高到最低)。

SELECT 
    posts.id, 
    COUNT(comments.content_id) as post_comments 
FROM 
    posts 
    LEFT JOIN comments 
     ON posts.id = comments.content_id 
GROUP BY posts.id 
ORDER BY post_comments DESC 
LIMIT 10 
1

移除comments.id :)的引号我还添加了我认为缺失的组。

mysql_query("SELECT * FROM posts JOIN comments ON posts.id = comments.content_id GROUP BY posts.id ORDER BY count(comments.id) LIMIT 10"); 
0

从count语句删除引号,并通过添加组:

SELECT * FROM posts 
JOIN comments ON posts.id = comments.content_id 
GROUP BY comments.content_id 
ORDER BY count(comments.content_id) 
LIMIT 10 
相关问题