加入查询计数

时间:2012-07-23 04:49:40

标签: php mysql sql

我有两张桌子:评论&博客

博客包含以下字段:id(唯一键),标题,作者,正文,日期,img,imgdes,标签

评论:密钥(唯一密钥),postid(与博客的ID相关),姓名,电子邮件,日期,消息

我试图在每个帖子上显示我的所有博文和评论数量。

所以我试图“计算(postid)postid = id”

我得到了一些工作,但它的基础是有一条评论不会起作用,但就是这样:

 SELECT a.postid,c.author,c.title, c.id,c.body,c.date,c.pic, c.tags, c.imgdesc,  
 COUNT(*) AS num_comments FROM comments a LEFT JOIN blog c ON c.id = a.postid 
 GROUP BY c.id order by id DESC"

同样,只有当所有内容都有评论并且我明白为什么但我无法弄清楚如何实现我想要的内容时,这才有效。

把它全部放在那里我有:

 $sql="***( help 1 of 2) what to set the query to****"
 $query = mysql_query($sql) or die(mysql_error());
  <?php do{ ?>
  <html stuff here>
  <?php echo $blog['title']?><br>
  <?php echo $blog['*******(help 2 of 2) # of comments display here******']
  <?php } while($blog = mysql_fetch_assoc($sql));?>

我确定这是一个简单的加入,但我不知道谢谢!

4 个答案:

答案 0 :(得分:1)

使用此查询它可能适合您

SELECT a.postid,c.author,c.title, c.id,c.body,c.date,c.pic, c.tags, c.imgdesc, COUNT(a.key) AS num_comments FROM blog c left outer join comments a ON a.postid = c.id GROUP BY c.id order by id DESC

答案 1 :(得分:1)

如果你想要所有的博客文章,那么它应该在左连接的左侧。

答案 2 :(得分:0)

我认为问题在于你写的地方:FROM comments a LEFT JOIN blog c ON c.id = a.postid GROUP BY c.id order by id DESC"

comments ablog c似乎不是正确的引用。

应该是FROM comments.a LEFT JOIN blog.c ON ......?

答案 3 :(得分:0)

您是否计算每个博客中的评论数量?如果是,那么, SELECT c.postid,count(key) as num_of_comments FROM blog b, comments c WHERE b.id = c.postid GROUP BY c.postid

另一个简单的方法: 由于您将postid作为外键,您可以从注释表中获取结果 SELECT postid,count(key) as num_of_comments FROM comments GROUP BY postid