В этой таблице один столбец содержит 2 одинаковые строки, которые являются столбцами курса. Есть две строки, которые равны 612. Теперь я хочу написать запрос, чтобы показать эту строку как первую и оставшиеся строки после этого.
И я написал запрос, как показано ниже, но не работает.
public function gettrendingcourse(){
$sql="SELECT * FROM
course c
INNER JOIN course_student_mapping cm
ON cm.courseId = c.courseId
INNER JOIN users u
ON c.userId = u.userId
INNER JOIN category s
ON s.categoryId=c.categoryId
GROUP BY c.courseId HAVING count(*) >= 1
ORDER BY cm.courseId DESC ";
$query=$this->db->query($sql);
return $query;
}
Используйте подзапрос в предложении ORDER BY
, чтобы получить курсы, упорядоченные по количеству учащихся:
SELECT *
FROM course c
JOIN course_student_mapping cm ON cm.courseId = c.courseId
JOIN users u ON u.userId = cm.studentid
JOIN category s ON s.categoryId = c.categoryId
ORDER BY
(
select count(*)
from course_student_mapping cm2
where cm2.courseid = c.courseid
) DESC, courseid, studentid;
INNER JOIN users u ON c.userId = u.userId - это должно вызывать ошибку, нет видимого идентификатора пользователя в курсе, и я подозреваю, что соединение должно быть на cm.studentid.
{}
для простого форматирования (или использовать HTML-теги <pre> и </ pre>).