【发布时间】:2017-11-18 17:19:50
【问题描述】:
表user左连接表personal_record然后连接表activity。
usertable:id ...
personal_record 表:user.id、activity.id、confirm_time...
activity: id、时间、delete_time...
注意:时间是指在此活动上花费的时间,例如 8 小时。
在user加入personal_record之前,persanoal_record部分行需要过滤为personal_record只有在设置confirm_time时有效。personal_reocrd只包含activity_id,activity包含activity需要的时间加入总和(时间)一个人花费。
通过更新activity.delete_time 列删除活动。
这是我的代码。
更新(几乎解决):($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();
【问题讨论】:
-
删除 where 条件并将其添加到这样的条件中 ->join('activity','activity.id = personal_record.activity and activity.delete_time=NULL ', 'left', false) @泰克
-
你应该看看这个问题,也许它有帮助。 example
标签: mysql codeigniter join