2015-02-23 118 views
1

Split mysql column in codeigniterMysql在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 

我如何可以执行上面的查询?

回答

2

select()假的最后一个参数:

$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

$这个 - > DB->选择()接受一个可选的第二个参数。如果将其设置为FALSE,则CodeIgniter不会尝试使用反引号来保护字段或表名。如果您需要复合选择语句,这很有用。

+0

非常感谢你的回答,这工作正常。 – 2015-02-23 09:33:50

+1

不要忘了标记答案,如果它帮助:) – AdrienXL 2015-02-23 09:37:50

+2

它显示8分钟接受,这就是为什么我仍然不接受答案。 :) – 2015-02-23 09:39:12

0

使用本

$summ = $this->db->query("SELECT SUM(column) FROM 
table WHERE columnid > '0' ")->result_array(); 
echo '<br>summ=>'.$summ[0]['SUM(answer)'];