【问题标题】:nested where condition in codeigniter在codeigniter中嵌套where条件
【发布时间】:2017-02-11 12:23:20
【问题描述】:

如何从这些数据中获取所有用户,其中 tbl_attendance 中的 user_id 没有当前日期且 application_status 3 和 4

attendance_id   user_id      date_in        attendance_status status 0=absent 1=present 3 = onleave 4 = onoff
    1            1          2017-02-05      1
    2            36         2017-02-11      4
    3            36         2017-02-11      4
    4            36         2017-02-11      3
    5            1          2017-02-02      1
    6            36         2017-02-01      1

我的代码是这样的

$date=date('Y-m-d');
$this->db->where('tbl_users.user_id NOT IN(SELECT user_id FROM tbl_attendance WHERE tbl_attendance.date_in= "'.$date.'" )');

$this->db->where_in( 'tbl_attendance.attendance_status', array( '3', '4' ) );

想要合并这两行并生成输出,例如当前日期是否存在于 3 或 4 中,请帮助我

【问题讨论】:

  • 将您的第二个条件移入子查询内部,如下所示 $this->db->where('tbl_users.user_id NOT IN(SELECT user_id FROM tbl_attendance WHERE tbl_attendance.date_in != "'.$日期。'" AND tbl_attendance.attendance_status IN (3,4) ) );

标签: php codeigniter nested where


【解决方案1】:

你可以这样尝试。结合两个条件

$this->db->where("tbl_users.user_id NOT IN(SELECT user_id FROM tbl_attendance WHERE tbl_attendance.date_in='$date' AND tbl_attendance.attendance_status IN(3,4))");

【讨论】:

    【解决方案2】:

    看到您正在使用查询生成器...

    $this->db->group_start()
        $this->db->where_in( 'tbl_attendance.attendance_status', array( '3', '4' ) );
        $this->db->where_not_in('tbl_users.user_id', 'SELECT user_id FROM tbl_attendance WHERE tbl_attendance.date_in = '. $date, false)
    $this->db->group_end()
    

    应该工作

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多