0

基本的に、

2つのテーブルがあります。1つはいくつかの投稿があり、もう1つはコメント用です。私がやろうとしているのは、最も人気のある投稿を含むページを作成することです。コメントの数に応じて人気のある投稿をレンダリングします。

これが私がこれまでに持っているクエリです

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

しかし、count()はそれを台無しにしています、誰かが私を助けることができますか?ありがとう!

4

3 に答える 3

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
于 2012-05-04T18:00:25.063 に答える
1

コメントの周りの引用符を削除します。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");
于 2012-05-04T17:56:50.990 に答える
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
于 2012-05-04T17:59:36.667 に答える