私は3つのテーブルを持っています:users
、、。Courseusersは、courses.idCourseとusers.idUserを結合する中間テーブルです。ただし、中間テーブルには外部キー制約やがありません。courses
courseusers
ON DELETE CASCADE
ON UPDATE CASCADE
Users:
idUser|name
Courses:
idCourse|name
Courseusers:
id|idUser|idCourse
私の質問は、テーブルcourseuser
から手動で削除されたユーザーを無視しながら、最も購読されている上位3つのコース(のほとんどのエントリ)を取得するにはどうすればよいですか(それらはのエントリとして引き続き存在します)。users
courses
courseuser
私が今持っているもの:
SELECT c.idCourse, c.name, count(*) as count
FROM courseusers as cu
JOIN course as c
ON cu.idCourse=c.idCourse
JOIN users as usr
ON (usr.idUser=u.idUser)
GROUP BY u.idCourse
ORDER BY count DESC
LIMIT 3