现在我知道如何连接两个表,我想实际计算第二个表中包含活动记录的行数。
说,我有这两个表:
blog comments
------- ----------
id id
title blog_id
content comment
不,我想在最后三个博客条目中计算每个博客条目的评论数量,所有这些都在一个查询中。我试过这样的东西,但它不起作用:
$this->db->select('*')
->from('blog')
->order_by('blog.id', 'desc')
->limit(3);
$this->db->join('comments', 'blog_entry_id = blog.id')
->group_by('blog_entry_id')
->count_all_results('comments');
我该怎么办?我做错了什么?
答案 0 :(得分:9)
知道了! :)
$this->db->select('blog.*, COUNT(comments.id) as num_comments')
->from('blog')
->order_by('blog.id', 'desc')
->limit(3);
$this->db->join('comments', 'blog_entry_id = blog.id')
->group_by('blog_entry_id');
答案 1 :(得分:0)
是的,这是正确的方式,
$this->db->where('p.status','Active');
$this->db->where('p.admin_status','Active');
$this->db->select("p.id,p.date,p.user_id,p.title,p.contents,p.category_id,p.status,p.admin_status,u.username,i.mediaid,COUNT(c.id) as comments")->from('posts as p')->limit($num,$start)->order_by($order,$format);
$this->db->join('users u','u.id=p.user_id','left');
$this->db->join('user_meta m', 'm.user_id = p.id','left');
$this->db->join('user_profile_image i', 'i.userid = p.id','left');
$this->db->join('comments c', 'c.postid = p.id','left');
return $this->db->get()->result();