public function actionFilter2() { $teachers = []; $students = []; $teachers = Teacher::findBySql("\n select t.name, t.id from (\n select st2.teacher_id st2, st3.teacher_id st3, count(st3.student_id) cnt from teacher_student st2\n left join teacher_student st3 on st3.student_id = st2.student_id and st2.teacher_id != st3.teacher_id\n where st3.teacher_id is not null group by st3.teacher_id, st2.teacher_id\n ) res \n left join teacher t on t.id=st2\n left join teacher t2 on t2.id=st3\n order by cnt DESC limit 2\n ")->all(); if (count($teachers) == 2) { $students = Student::findBySql("\n select * from teacher_student st\n left join student t on t.id = st.student_id \n left join teacher_student st2 on st2.teacher_id = :teacher1 and st2.student_id = st.student_id\n where st.teacher_id = :teacher2 and st2.teacher_id is not null\n ", [':teacher1' => $teachers[0]->id, ':teacher2' => $teachers[1]->id])->all(); } return $this->render('filter2', ['teachers' => $teachers, 'students' => $students]); }