0

我有 2 张桌子:评论和博客

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

评论:key(唯一键),postid(与博客的id有关),姓名,电子邮件,日期,消息

我试图显示我所有的博客文章以及每篇文章的评论数量。

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

我有一些工作要做,但它的基础是有 1 条评论不起作用,但就是这样:

 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

4 回答 4

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
于 2012-07-23T04:57:06.640 回答
1

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

于 2012-07-23T04:57:23.383 回答
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……?

于 2012-07-23T04:56:42.907 回答
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

于 2012-07-23T05:10:51.783 回答