2011-04-17 21 views
7

現在我知道如何連接兩個表,我想實際計算第二個表中具有活動記錄的行數。CodeIgniter:計算來自連接表的結果

說,我這兩個表:

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

我該怎麼辦?我究竟做錯了什麼?

回答

7

Got it! :)

$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'); 
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();