MySQL Query从连接表中选择相关行

时间:2017-04-21 04:34:21

标签: php mysql codeigniter

我正在开发一个codeigniter项目。

这是我的表格

category
cid cname
5   general
6   science
7   math

books
bid bname
12  first
13  second
14  third
15  fourth
16  fifth
17  sixth

dir
id  bid     cid
1   12      5
2   13      6
3   14      7
4   15      6
5   16      5
6   17      5

正如您所看到的那样,加入表格很简单,但这就是我需要做的事情。

创建一个函数,它将为我提供类别名称(cname)和该类别中的书籍数量。例如,结果应该像

general 3
science 2
math    1

这是我的WIP模型

function category_details(){
        $this->db->order_by('cname','asc');
        $query=$this->db->query('Select * from dir join category on category.cid=dir.cid join books on dir.bid=books.bid');
        return $query->result_array();
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

查询应该是这样的,以获得预期的结果

Select category.cname,count(dir.cid) from dir join category on category.cid=dir.cid join books on dir.bid=books.bid group by category.cname

你的功能应该是这样的

function category_details(){
        $this->db->order_by('cname','asc');
        $query=$this->db->query('Select category.cname,count(dir.cid) from dir join category on category.cid=dir.cid join books on dir.bid=books.bid group by category.cname');
        return $query->result_array();
}

您可以参考此代码COUNT / GROUP BY with active record?进行正确的CI查询。