0

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

首先,我有一个名为“视频”的表,其中存储了一些视频信息,例如 v_name、v_description 和 category_name。

在名为“类别”的第二个表中,我存储类别信息,如 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();
4

1 回答 1

2

要使您的代码正常工作,您需要进行两项更改:

  • 首先你的加入类型应该是“左加入”。即使某个类别还没有视频,您仍然会得到计数结果 (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 列而不是名称来定义表(外键)之间的关系。

于 2013-03-20T17:35:34.317 回答