2011-04-17 19 views
7

Ahora sé cómo unir dos tablas, Me gustaría contar realmente el número de filas en la segunda tabla con registros activos.CodeIgniter: Contando los resultados de una tabla unida

decir que tengo estas dos tablas:

blog  comments 
------- ---------- 
id  id 
title blog_id 
content comment 

No quiero tomar las tres entradas del último blog y contar el número de comentarios por entrada de blog, todo en una sola consulta. He intentado algo como esto, pero no funciona:

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

¿Qué debo hacer? ¿Qué estoy haciendo mal?

Respuesta

7

¡Gracias! :)

$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

Sí, esto es forma correcta,

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