Jonas Johansson
Jonas Johansson

Reputation: 1

Codeigniter count number of articles in one category while listing categories

I have some problem while listing categories from database.

First i have a table called "Videos" where i store som videos-information like v_name, v_description and category_name.

In the second table called "Categories" where i store categories-information like c_name and c_description.

OFC i have id's in every table :)

But now i want to list the categories and in the same query count every videoitem in every category.

This is the code and i can't figure out how to do in the model now and later how to show the numbers in the view file, so pleace help me!

Thanks for your time and support :D

    $this->db->select('c.*');
    $this->db->from('categories as c');
    $this->db->join('videos as v', 'c.c_name = v.v_category', 'right');
    return $this->db->get()->result_array();

Upvotes: 0

Views: 2183

Answers (1)

Javi Stolz
Javi Stolz

Reputation: 4755

For your code to work you need two changes:

  • First you join type should be a "left join". Than way you still will get a count result (0) even if a category has no videos yet.
  • Second you need to group your results to be able to use the aggregate function count().

Try with this:

$this->db
->select('categories.c_name, COUNT(videos.id) as num_videos')
->from('categories')
->join('videos', 'categories.c_name = videos.v_category', 'left')
->group_by('categories.c_name');

Also you should reconsider your DB design. If you have id columns in both tables (wich I assume are the primary key) then you should define the relationship between the tables (foreign keys) using the id column, not the name.

Upvotes: 2

Related Questions