php - MySQL 查询从连接表中选择依赖行

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

任何帮助将不胜感激。

最佳答案

查询应该像这样才能得到预期的结果

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

关于php - MySQL 查询从连接表中选择依赖行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43534035/

相关文章:

codeigniter - 如何在CodeIgniter中将错误日志存储到数据库

php - Codeigniter: fatal error 调用未定义的函数mysqli_init()

PHP 网络表单到电子邮件

java - hibernate - ClassNotFoundException : com. mysql.jdbc.Driver

Mysql IN 运算符与 ifnull

php - 为什么我在mysql中输入数据时会出现闪烁?

codeigniter - 使用codeigniter事件记录获取单个字段输出的值

php - 写入变量时出错

php - 发出 POST 请求时,Laravel WebSocket 出现 Pusher 错误

PHP 在父类(super class)中获取属性方法