显示所有博客,其中包含在codeigniter中批准的评论

时间:2017-03-31 04:50:44

标签: php mysql codeigniter

有两个表,博客和评论表。在博客表中,所有博客都存储了

博客表

----------------------------------------
id  | blog_name | date  
----------------------------------------
1   |  abc   |   31/3/17  
----------------------------------------
2   |  xyz   |   31/3/17  
----------------------------------------
3   |  rbc   |   31/3/17  
----------------------------------------
4   |  ert   |   31/3/17 
----------------------------------------

评论表

----------------------------------------
id  | comment |  blog_id | approved 
----------------------------------------
1    | abc    |    1     |     0
----------------------------------------
2    | xyz    |    1     |     1
----------------------------------------
3    | rbc    |    2     |     0
----------------------------------------
4    | ert    |    4     |     1
----------------------------------------

现在我希望以某种方式显示结果...所有博客都会显示,但每个博客都会显示评论数量..但评论计数应仅针对已批准的评论..默认情况下,批准的评论为0表示不批准,但1意味着批准..问题是,如果我加入两个表在我写的条件批准= 1然后它只显示2个博客,但我需要显示所有博客评论..如果任何博客评论不存在于评论表然后它将向我显示0计数...请帮助我这个

我正在使用此联接..此联接不显示所有博客..

SELECT b.id,b.blog_name,COUNT(c.comment)as comment_count FROM blog b LEFT JOIN comment c ON b.id = c.blog_id WHERE c.approved = 1 GROUP BY b.id

我希望所有博客都有评论..它只显示已批准的评论相关博客..

1 个答案:

答案 0 :(得分:0)

选择 博客。*, COALESCE(COUNT(comments.id),0)AS comment_count

来自博客 LEFT JOIN评论 ON comments.blog_id = blog.id AND comments.approved = 1

GROUP BY blog.id