Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql codeigniter on和where组合_Mysql_Codeigniter_Join - Fatal编程技术网

Mysql codeigniter on和where组合

Mysql codeigniter on和where组合,mysql,codeigniter,join,Mysql,Codeigniter,Join,表用户左侧加入表个人记录然后加入表活动 用户表:id 个人记录表格:user.id、activity.id、confirm\u time 活动:id、时间、删除时间 注:时间是指在该活动上花费的小时数,8等 在userjoinpersonal\u record之前,一些personal\u record行需要过滤为personal\u record行,只有在设置了确认时间后才有效。personal\u reocrd仅包含活动id,activity,其中包含活动需要加入的时间和一个人花费的时间

用户
左侧加入表
个人记录
然后加入表
活动


用户
表:id

个人记录
表格:user.id、activity.id、confirm\u time

活动
:id、时间、删除时间

注:时间是指在该活动上花费的小时数,8等


user
join
personal\u record
之前,一些
personal\u record
行需要过滤为
personal\u record
行,只有在设置了确认时间后才有效。
personal\u reocrd
仅包含活动id,
activity
,其中包含活动需要加入的时间和一个人花费的时间

通过更新
activity.delete\u time
列删除活动

这是我的密码

更新(几乎解决):($data\u begin筛选记录范围)


删除where条件并将其添加到on条件中,如->加入('activity','activity.id=personal\u record.activity and activity.delete\u time=NULL','left',false)@teekYou应该研究一下这个问题,也许会有帮助。使用
where
将筛选一些用户,因为他们没有参加任何活动。
$result = $this->db->select('user.*, ifnull(sum(ac.time), 0) as time')
                   ->from('user')
                   ->join('(select * from personal_record where personal_record.confirm_time is not null) as pr','user.id = pr.person', 'left')
                   ->join('(select * from activity where activity.delete_time is null and activity.create_time >"'.$date_begin.'")as ac','ac.id = pr.activity', 'left')
                   ->group_by('user.id')
                   ->order_by('time', 'desc')
                   ->get()
                   ->result();
$this->db->select('user.*,personal_record.*,ifnull(sum(activity.time), 0) as time');
$this->db->from('user');
$this->db->join('personal_record','personal_record.person = user.id');
$this->db->join('activity','activity.id = personal_record.activity');
$this->db->where('activity.delete_time',null);
$this->db->or_where('personal_record.confirm_time !=', null);
$this->db->order_by('time', 'asc');
$this->db->group_by('user.id');
$data = $this->db->get()->result();
return $data;