2017-04-21 59 views
0

我正在开发codeigniter项目。MySQL查询从联接表中选择相关行

这里是我的表

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(); 
} 

任何帮助将非常感激。

+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查询。

+0

非常感谢,这工作得很好。 – Rana