php - 使用连接 codeigniter 的求和查询
问题描述
我有 2 张桌子。一个带有客户列表,另一个带有数据列表。我正在尝试在我的视图中创建一个表,其中列出了客户名称以及数据表中列(job_total)的总和。我能够编写一个在大多数情况下都能正常工作的查询。问题是,如果我还没有在数据表中创建记录,我仍然需要在我的视图中的表上显示余额为零的客户名称。需要一些关于如何处理这个问题的指导。我在想我需要查询我的客户列表并遍历该查询,只是不知道该怎么做。
我希望我的视图如下所示:
+-------------+----------+ | 客户名称 | 余额 | +-------------+----------+ | xxx | $75.00 | | xxx | $100.00 | | xxx | $0.00 | +-------------+----------+
这是我数据库中两个表的粗略布局:
cj_clients +----+--------------+ | 编号 | 客户名称 | +----+--------------+ | 1 | 客户1 | | 2 | 客户2 | | x | xxx | +----+--------------+
cj_data +----+------------+------------+ | 编号 | 客户 ID | 工作总数 | +----+------------+------------+ | 1 | 1 | 5.00 | | 2 | 1 | 10.00 | | 3 | 1 | 15.00 | +----+------------+------------+
以下代码返回所需的结果,除非尚未对 cj_data 表进行任何条目。不知道如何在表格视图中仍然获得余额为 0 美元的客户。
$this->db->select('client_name,client_id, sum(job_total) AS balance')
->from('cj_data')
->join('cj_clients','cj_data.client_id = cj_clients.id')
->group_by('client_name');
return $this->db->get()->result();
解决方案
你需要给左加入
$this->db->select('client_name,client_id, IFNULL(sum(job_total),0) AS balance')
->from('cj_data')
->join('cj_clients','cj_data.client_id = cj_clients.id',"left") // here
->group_by('client_name');
return $this->db->get()->result();
如果找不到记录,我写了 IFNULL 条件,否则它将在 cj_clients 中显示所有客户端的所有数据
注意:CodeIgniter 的默认行为是如果未指定连接,它将添加内部连接
推荐阅读
- mysql - Mysql 组复制:永远卡在 RECOVERING 上
- java - 以编程方式更改日期范围的日期格式
- c - sendto 函数出错
- computer-vision - 如何使用 Azure 自定义视觉服务响应 boundingBox 绘制形状
- python - 在 Python 中编码和解码德语文本
- python - 使用 Python 对文件执行连续的“差异”操作
- ios - 在 xcode 中编译期间启用位码错误
- node.js - 配置firebase实时数据库
- syntax - 它适用于太多的论点;也许你忘记了一个`;'
- jquery - 在我的应用程序的 3 个面板中展开所有元素后,Bootstrap Accordion 不起作用?