Отчет об активности в Moodle для курса показывает активность, просмотры и последний доступ.Мы требуем, чтобы эти данные были разбиты на группы, присутствующие в курсе.Сколько просмотров было сделано для действия уникальными пользователями, присутствующими в определенных группах.Также должны включать данные пользователей, не входящих в какие-либо группы, при этом поле группы должно быть пустым
. Для этого нам удалось написать следующий запрос.Пользователи, которые не представлены ни в одной из групп курсов, не учитываются, даже после использования левого соединения
SELECT ug.groupid, grps.name, slog.contextinstanceid as cmid, COUNT('x') AS numviews,
COUNT(DISTINCT slog.userid) AS distinctusers, MAX(slog.timecreated) AS lasttime
FROM prefix_logstore_standard_log AS slog
LEFT JOIN prefix_groups_members AS ug ON ug.userid = slog.userid
INNER JOIN prefix_groups AS grps ON grps.id=ug.groupid
WHERE grps.courseid = 2156
AND slog.courseid = 2156
AND slog.anonymous = 0
AND slog.crud = 'r'
AND slog.contextlevel = 70
GROUP BY slog.contextinstanceid, ug.groupid
Ожидаемый результат - список действий с представлениями и время последнего доступа, отсортированные / разделенные по группам, этотакже должен включать представления действий тех пользователей, которые не входят ни в одну группу, поле groupid должно быть просто пустым, но фактический вывод содержит только данные представления пользователей, присутствующих в группах.