0

我有表tbl_poststbl_comments主键post_idcomment_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
");

但我不知道它做了什么。如何组合两个表格,以便总评论确定列出的帖子的顺序tbl_posts

4

3 回答 3

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 回答
1

看起来您有名为tbl_commenttbl_post的表,但您的查询仅将它们列为comment 和 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 回答
0

您的 SQL 说明:

您正在使用内部连接从表comments中选择列comment_id ,从表post中选择列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 回答