2012-06-25 87 views
0

我有表tbl_poststbl_comments,主键分别为post_idcomment_id。我试过这个代码:根据另一结果的总数对MySQL结果进行排序

$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确定列出的帖子的顺序?

回答

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 
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"); 

这只是修复了查询,以便它运行,而没有解决您的任何内容问题,即通过组两个(我猜)是主键。

**编辑** 要解决的排序尝试:

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(*) 
+0

是,该表是tbl_comments和tbl_posts。我尝试了你的建议,但没有奏效。有没有一个很好的网站可以解释你做了什么,或者你有时间解释如何组合工作? – user1470755

+0

在FROM子句中列出要引用的表,在这种情况下,为每个表创建一个别名。U表示post和c表示注释。在WHERE子句中是连接发生的地方。每个tbl_comment.comment_id在tbl_post.comment_id中都有一个匹配的行,则返回一个值。 – Jake1164

+0

您是否收到错误或者只是没有返回行?如果你得到一个空集,那么我会验证你在这两个表中都有一个共同的comment_id值。 – Jake1164

0

您的SQL的说明:

您选择列COMMENT_ID从表评论,列POST_ID从表使用内连接,分组comment_id,post_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"); 
相关问题