用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4483|回复: 5
收起左侧

[数据库] ci 数据库类怎么写 sum(if (journal_level = 1 ,1,0)) as num_core

[复制链接]
发表于 2010-10-19 21:55:34 | 显示全部楼层 |阅读模式
后台转换成这个了 sum(if (journal_level = 1, `1`, `0))` as num_core
 楼主| 发表于 2010-10-19 21:58:39 | 显示全部楼层
$this->db->select() 可接受一个可选的第二个参数。如果你把它设为FALSE, CodeIgniter 将不会使用反引号保护你的字段或者表名。这在进行复合查询时很有用。

$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE);
$query = $this->db->get('mytable');

这个问题我解决了
发表于 2010-10-19 22:58:24 | 显示全部楼层
用case when else end
发表于 2010-11-3 14:40:30 | 显示全部楼层
你这个是数据库程序语言吗?
我翻看了MYSQL手册的IF ELSE那一章
似乎是这么写的
IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] ...
    [ELSE statement_list]
END IF
这个不是DBA用的程序语句吗?
你不是WEB应用开发程序员吗???
是用PHP 的话用这个
if($flag)
{
   
}
else
{
  
}
发表于 2010-11-3 15:32:28 | 显示全部楼层
本帖最后由 jeongee 于 2010-11-3 15:33 编辑

果断要这样
PHP复制代码
 
SUM(CASE  WHEN journal_level = 1  THEN 1 ELSE 0 END) AS num_core
 
复制代码

mysql中case when语句的使用方法:
mysql中也有像php语言中switch case 这样的语句。
发表于 2010-11-3 17:25:44 | 显示全部楼层
果断要这样

mysql中case when语句的使用方法:
mysql中也有像php语言中switch case 这样的语句。  ...
jeongee 发表于 2010-11-3 15:32


可以是可以。
但是貌似。
用这种程式的只有DBA了。触发器神马的。这个PHP肯定没有命令行给力啊。

本版积分规则