$data = Db::name('class_students')->alias('a')
->join('user b', 'a.student_id = b.id and b.delete_time is null')
->join('task_classs c', '(FIND_IN_SET(a.student_id,c.student_id) OR (a.class_id = c.class_id and c.student_id is null)) and c.class_id = ' .$classId)
->join('task_child d', 'c.id = d.task_class_id and d.delete_time is null')
->leftJoin('task_student e', 'a.student_id = e.user_id and d.id = e.task_child_id and e.delete_time is null')
->where($where)
->group('a.student_id')
// c.task_id,c.id as task_class_id,d.id as child_id,e.id as task_student_id ,
->field('a.id,b.id as user_id,b.nickname,b.avatar,count(e.id) as suc_total,count(d.id) as child_total,IFNULL(round( count(e.id) / count(d.id) , 2),0) * 100 as percentage')
->order('percentage desc')
->paginate(['page'=>$page,'list_rows'=>$limit])->toArray();
thinkphp记一次关联查询统计以及join里使用Find_in_set
发布于 2024-07-17 537 次阅读
叨叨几句... NOTHING