表user
左连接表personal_record
然后连接表activity
。user
表:id。。。personal_record
表:user.id,activity.id,确认时间。。。activity
:id,time,删除时间。。。
注:时间是指花在这项活动上的小时数,8等。
在连接之前,需要将某些行筛选为只有在设置了确认时间时才有效。user
仅包含活动id,personal_record
其中包含需要连接的活动时间以计算一个人花费的时间之和。
因为活动是通过更新persanoal_record
列删除的。
这是我的密码。
更新(几乎解决):($data_begin过滤记录范围)
$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;
关于mysql - Codeigniter在何处以及在何处组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44580624/