Я заметил, что вы, кажется, ограничили результаты только одним идентификатором пользователя (WHERE mcc.userid = $ user_id), поэтому вам, вероятно, следует удалить это ограничение, если вы хотите получить подробную информацию о более чем одном студенте.
Вам не обязательно присоединяться к таблицам mdl_course или mdl_user, так как для каждой комбинации ученика + курса есть только одна таблица mdl_course_completions.
Вы должны, однако, добавить ограничение на поле «timecompleted», чтобы убедиться, что оно не является нулевым (записи mdl_course_completions создаются, когда студент начинает курсировать, записывать время и время, когда курс завершается также заполненное timecompleted поле).
Это должно дать вам:
SELECT userid AS student_id, COUNT(*) AS completed_courses
FROM mdl_course_completions
WHERE timecompleted IS NOT NULL
Какой перечислит число курсов каждый студент отработал.
Если, вместо этого (и, как указано в начале этого вопроса), вы хотите, количество студентов, которые закончили по крайней мере один курс, то запрос будет:
SELECT DISTINCT(userid)
FROM mdl_course_completions
WHERE timecompleted IS NOT NULL