Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CodeIgniter: Counting results from a joined table

Now I know how to join two tables, I'd like to actually count the number of rows in the second table with active records.

Say, I have these two tables:

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

No I want to take the three last blog entries and count the number of comments per blog entry, all in one query. I tried something like this, but it doesn't work:

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

What should I do? What am I doing wrong?

like image 662
Kriem Avatar asked Apr 17 '11 18:04

Kriem


1 Answers

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');
like image 76
Kriem Avatar answered Oct 01 '22 14:10

Kriem