2012-05-04 26 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 
相關問題