【问题标题】:Convert MySql query containing case statement to codeigniter active record query将包含 case 语句的 MySql 查询转换为 codeigniter 活动记录查询
【发布时间】:2014-09-09 08:01:21
【问题描述】:

我有以下查询,我想让 Codeigniter Active Record 更友好,但我不确定如何将 case 语句添加到查询的 set 部分。

UPDATE attendance_time_index ati
JOIN users s ON ati.time_index_user_id = s.user_id
JOIN attendance_code_groups acg ON s.user_attendance_code_group = acg.group_id
SET ati.time_index_default = CASE WHEN ati.time_index_value = 'PM' THEN acg.group_pm_default ELSE acg.group_am_default END
WHERE s.user_id = 123

我已经尝试过了,但连接似乎不是...加入。

$this->db->join('users s','ati.time_index_user_id = s.user_id');
$this->db->join('attendance_code_groups acg', 's.user_attendance_code_group = acg.group_id');
$this->db->set('ati.time_index_default', 'CASE WHEN ati.time_index_value = 'PM' THEN acg.group_pm_default ELSE acg.group_am_default END', FALSE);
$this->db->where('s.user_id', 123);
$this->db->update('attendance_time_index ati');

有什么想法吗?

【问题讨论】:

    标签: php mysql sql codeigniter activerecord


    【解决方案1】:

    试试这个

    $this->db->set('ati.time_index_default', "CASE WHEN ati.time_index_value = 'PM' THEN acg.group_pm_default ELSE acg.group_am_default END", FALSE);
    $this->db->where('s.user_id', 123);
    $this->db->update('attendance_time_index ati
    join users s on ati.time_index_user_id = s.user_id
    join attendance_code_groups acg  on s.user_attendance_code_group = acg.group_id
    ');
    

    【讨论】:

    • @Tom 使用活动记录你不能使用更新的连接函数
    • 在这种情况下,我想我最好选择我唯一的选择!谢谢您的帮助。非常感谢。
    猜你喜欢
    • 2012-10-22
    • 2018-07-11
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多