Я хотел найти 5 лучших данных о студентах, у которых нет самого высокого уровня посещаемости в классе. Чтобы получить, я использовал следующий запрос. Но проблема заключается в том, что учащиеся имеют attendance_count
как 7 9 12 15 1 10
, хотя она должна возвращать 9 10 12 15
, она возвращает 9 7 15 12
(attendance_count)
детали ученика. Как я могу решить проблему?
$students = DB::table('students')
->select('students.*')
->orderBy('students.attendance_count', 'desc')
->limit(4)
->where('students.status','=','1')
->get();
Пожалуйста, убедитесь, что тип столбца для students.attendance_count
в Integer и напишите запрос следующим образом.
$students = DB::table('students')
->select('students.*')
->where('students.status','=','1')
->orderBy('students.attendance_count', 'desc')
->limit(4)
->get();
Его хорошо писать orderBy
и limit
после того, как, where
состояние.
Порядок by должен использоваться после предложения where и перед лимитной оговоркой, которая решит вашу проблему
select student.*
from students
where status=1
order by attendence desc
limit 4;
limit
уже есть.
Вы можете добиться числового преобразования, подобного этому
->orderBy('students.attendance_count+0', 'desc')