繁体   English   中英

MySQL查询根据来自两个不同表的值选择一个表。

[英]MySQL query to select one table based on values from two different tables.

我一直在从事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

我想显示为

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中传递了)。

将不胜感激。

试试这个查询:

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

感谢@Parvez的代码,这就是我得到的结果。 我在其中添加了“ where”条件,因为它首先要检查该条件,并且由于我实际上想输出books表,所以我在select中将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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM