2017-04-21 74 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