お世話になっております。
現在、Moodle上にあるコースの一覧と、各コースの登録受講者数とそのうちの完了者数を出力したいと考えています。
Moodleのレポート機能ではできそうにありませんでしたので、DBからSQL文で直接抽出することを検討しています。
下記のSQL文を試したところ、コース一覧は出力できますが、完了者数が合計されてしまい、すべて同じ数字になってしまいました。(画像の参照をお願いします。)
完了者数をコース別に抽出するには、SQL文をどのように修正すればよいか、ご教授していただけますでしょうか。
SELECT DISTINCT c.fullname AS CourseName,
( SELECT COUNT(u.id)
FROM mdl_user u
JOIN mdl_user_enrolments ue ON ue.userid=u.id
JOIN mdl_enrol e ON e.id = ue.enrolid
JOIN mdl_role_assignments ra ON ra.userid=u.id
JOIN mdl_context ct ON ct.id = ra.contextid
AND ct.contextlevel = 50
JOIN mdl_course c ON c.id = ct.instanceid
AND e.courseid = c.id
JOIN mdl_role r ON r.id = ra.roleid
AND r.shortname = 'student'
WHERE e.status = 0
AND u.suspended = 0
AND u.deleted = 0
AND EXIST (
SELECT *
FROM mdl_course_completion_crit_compl
WHERE userid = u.id
AND course = c.id
)
) AS NumberOfCompleters
FROM mdl_course c
このSQL文で出力される結果は以下の画像のようになってしまいます。
以上です。よろしくお願いいたします。