0

私はそれぞれテーブルtbl_postsとそれぞれtbl_comments主要なキーpost_idを持っていcomment_idます。私はこのコードを試しました:

$allPosts=mysql_query("
    select c.comment_id, post_id, count(*)
    from post u,
    comments c
    where u.comment_id = c.comment_id
    group by comment_id, post_id
    LIMIT 10
");

しかし、私はそれが何をするのか見当がつきません。2 つのテーブルを組み合わせて、コメントの合計によって からの投稿のリスト順が決まるようにするにはどうすればよいtbl_postsですか?

4

3 に答える 3

1

tbl_commenttbl_postという名前のテーブルがあるように見えますが、クエリにはコメントと投稿としてリストされています。

select c.comment_id, post_id, count(*) 
from tbl_post u, tbl_comments c 
where u.comment_id = c.comment_id 
group by comment_id, post_id LIMIT 10


$allPosts=mysql_query("select c.comment_id, post_id, count(*) from tbl_post u, tbl_comments c where u.comment_id = c.comment_id group by comment_id, post_id LIMIT 10");

これはクエリを修正して実行するだけであり、コンテンツの問題には対処しません。つまり、両方のgroup by(私が推測していること)が主キーです。

**編集**並べ替えを修正するには、次の手順を試してください。

SELECT tbl_post.comment_id, count(*)  
FROM tbl_post, tbl_comments
WHERE tbl_post.comment_id = tbl_comment.comment_id  
GROUP BY comment_id LIMIT 10
ORDER BY count(*) 
于 2012-06-25T16:32:48.877 に答える
1

これを試してみてください。行ごとに区切って結合を操作すると読みやすくなります

select c.comment_id, post_id, count(*) 
from post u join comments c 
on u.comment_id = c.comment_id 
group by comment_id, post_id LIMIT 10
于 2012-06-25T16:30:19.770 に答える
0

SQLの説明:

テーブルのコメントから列comment_idを選択し、内部結合を使用してテーブルの投稿から列post_idを選択し、 comment_idpost_idでグループ化して、結果を10個に制限します。

私は試してみます:

$allPosts = mysql_query("SELECT * FROM 
(SELECT c.comment_id, u.post_id, COUNT(*) AS 'count' FROM post u 
LEFT JOIN comments c ON c.comment_id = u.comment_id 
GROUP BY c.comment_id, u.post_id)
ORDER BY count DESC LIMIT 10");
于 2012-06-25T16:38:57.050 に答える