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

我想顯示爲

general 3 
science 2 
math 1 

,我已經在模型下面的函數代碼實現

function category_details(){ 
    $this->db->order_by('cname','asc'); 
    $query=$this->db->query('Select category.cid,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(); 
} 

現在我想創建一個鏈接,打開每個類別並在裏面顯示書籍。

這裏是我正在試圖做到這一點,

View 
<a href="<?php echo site_url('category/books/'.$val['cid']);?>">Open</a> 

Controller 
public function books($cid){ 

    $data['books']=$this->books_model->get_books($cid); 

    $this->load->view('header',$data); 
    $this->load->view('category_books',$data); 
    $this->load->view('footer',$data); 

} 

Model 
function get_books($cid){ 
$this->db->where('dir.cid',$cid); 
$query=$this->db->query('select * from books join dir on books.bid=dir.bid join category on dir.cid=category.cid'); 
return $query->result_array(); 
} 

但是,這導致選擇所有的書籍,而不是根據$ CID我通過(雖然我可以看到在傳遞$ CID URL)。

希望有任何幫助。

回答

0

這裏是我得到的結果我之後,由於@Parvez了他的代碼。 我向它添加了「where」條件,因爲它假設首先檢查,並且由於我實際上想要輸出books表,所以我將books.bname更改爲books中的*。 以下是相應工作的最終型號代碼。

function get_books($cid){ 
$this->db->where('dir.cid',$cid) 
$this->db->select('dir.*,category.cname,books.*'); 
$this->db->from('dir'); 
$this->db->join('category', 'category.cid = dir.cid'); 
$this->db->join('books', 'books.bid = dir.bid'); 
return $query->result_array(); 
0

嘗試此查詢:

function category_details(){ 
    $query=$this->db->query('select c.cname, count(d.cid) as total from category as c join dir as d ON c.cid=d.cid group by d.cid order by total DESC'); 
    return $query->result_array(); 
    } 
相關問題