私は3つのテーブルを持っています:users、、。Courseusersは、courses.idCourseとusers.idUserを結合する中間テーブルです。ただし、中間テーブルには外部キー制約やがありません。coursescourseusersON DELETE CASCADEON UPDATE CASCADE
Users:
idUser|name
Courses:
idCourse|name
Courseusers:
id|idUser|idCourse
私の質問は、テーブルcourseuserから手動で削除されたユーザーを無視しながら、最も購読されている上位3つのコース(のほとんどのエントリ)を取得するにはどうすればよいですか(それらはのエントリとして引き続き存在します)。userscoursescourseuser
私が今持っているもの:
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