Codeigniter在列出类别时计算一个类别中的文章数量

时间:2013-03-20 16:42:09

标签: php codeigniter

我在列出数据库中的类别时遇到了一些问题。

首先,我有一个名为“视频”的表格,我存储了som视频 - 如v_name,v_description和category_name等信息。

在名为“Categories”的第二个表中,我存储类别信息,如c_name和c_description。

OFC我在每张桌子上都有id:)

但现在我想列出每个类别中每个视频项目的类别和相同的查询。

这是代码,我现在无法弄清楚如何在模型中做以及如何在视图文件中显示数字,所以请帮助我!

感谢您的时间和支持: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();

1 个答案:

答案 0 :(得分:1)

要使代码生效,您需要进行两项更改:

  • 首先你加入的类型应该是“左连接”。即使某个类别还没有视频,你仍然会获得计数结果(0)。
  • 其次,您需要对结果进行分组,以便能够使用聚合函数count()。

试试这个:

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

另外,您应该重新考虑数据库设计。如果两个表中都有id列(我假设它是主键),那么你应该使用id列而不是名称来定义表(外键)之间的关系。