codeigniter中的Mysql查询求和查询

标签 mysql sql codeigniter activerecord

Split mysql column in codeigniter

上面的链接是我的问题之一。我得到了上述问题的答案。但是现在我有一个sql查询如下,

SELECT SUM(IF(pay_type = 1, `pay_amount`, `0))` mess_pay, SUM(IF(pay_type=2, `pay_amount`, `0))` est_pay FROM (`mess_stock`);

我想在 codeigniter 中使用上面的代码。

下面的方法我试过了

$this->db->select('SUM(IF(pay_type = 1, pay_amount, 0)) mess_pay, SUM(IF(pay_type=2, pay_amount, 0)) est_pay');
$this->db->from('mess_stock');

但它抛出以下输出

A Database Error Occurred
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mess_pay, SUM(IF(pay_type=2, `pay_amount`, `0))` est_pay FROM (`mess_stock`)' at line 1


SELECT SUM(IF(pay_type = 1, `pay_amount`, `0))` mess_pay, SUM(IF(pay_type=2, `pay_amount`, `0))` est_pay FROM (`mess_stock`)


Filename: /var/www/college/modules/mess_fees/models/mess_fees_model.php
Line Number: 25

如何执行上述查询?

最佳答案

select() 的最后一个参数设置为 false :

$this->db->select('SUM(IF(pay_type = 1, pay_amount, 0)) mess_pay, SUM(IF(pay_type=2, pay_amount, 0)) est_pay', false);

它将阻止 CI 添加 ``。

看看文档:http://www.codeigniter.com/user_guide/database/active_record.html#select

$this->db->select() accepts an optional second parameter. If you set it to FALSE, CodeIgniter will not try to protect your field or table names with backticks. This is useful if you need a compound select statement.

关于codeigniter中的Mysql查询求和查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28670424/

相关文章:

php - 尝试创建一个页面,如果是第一次登录,则检查纯文本密码,否则检查哈希密码(php)

mysql - 有什么办法可以提交部分事务吗?

php - CodeIgniter Route 适用于 CIFS 挂载,但不适用于本地文件

mysql - 从 mySQL 中提取 COUNT(列) 到 VB.NET

java - 在 JPA CriteriaBuilder 中使用正则表达式

mysql - 使用 join、distinct、count 和 where 的复杂 SQL 请求

SQL Server 围绕数字和下划线进行全文搜索

mysql - mysql 中的 GROUP BY 查询返回多个重复行

php - 如何在 PHPExcel 中合并具有相同值的行,使用 if 逻辑进行数组循环

codeigniter - Codeigniter 中 Assets 的最佳实践