Недавно начал изучать Moodle
И хотел создать дополнительный модуль мониторинга - показывает количество студентов в курсах, тесты, опросы и так далее
Теперь вот что не могу решат
мне надо такая примерно вот такая инфо
1. Студенты 100
2. Учителя 15
....
1. список пользователей получил вот таким запросом
SELECT * FROM mdl_user WHERE mdl_user.deleted = 0 AND mdl_user.confirmed = 1 ORDER BY mdl_user.username
как теперь уточнит кто есть кто в системе
заранее спасибо за ответь
Поставьте Configurable Report
http://moodle.org/plugins/view.php?plugin=block_configurable_reports
И там есть куча готовых запросов на странице хелпа под Ваши задачи.
В хелпе не смог найти подходящий мне запрос
Если кто то поможет мне выше указанным задачами - буду очень благодарен
SELECT DISTINCT mdl_role.name, mdl_user.username, mdl_user.firstname, mdl_user.lastname
FROM mdl_role_assignments
INNER JOIN mdl_role ON (mdl_role_assignments.roleid = mdl_role.id)
INNER JOIN mdl_user ON (mdl_role_assignments.userid = mdl_user.id)
WHERE mdl_user.deleted = 0 AND mdl_user.confirmed = 1
ORDER BY mdl_user.username
вот с этим запросом уточнил кто есть кто в системе - но количество записей не совпадает с количеством записей запроса
SELECT DISTINCT * FROM mdl_user WHERE mdl_user.deleted = 0 AND mdl_user.confirmed = 1 ORDER BY mdl_user.username
количество записей не совпадает с количеством записей запроса
Вторым запросом вы получаете "чистый" список подтвержденных пользователей сайта, без удаленных.
Первый же запрос выводит список всех ролей тех же пользователей сайта. Разницу заметили?
Поэтому результат в большинстве случаев не совпадёт, т. к. одному пользователю могут быть назначены несколько ролей, причем в разных контекстах системы (главная страница сайта, курс, категория курса, модуль, блок). Просмотрите результат первого запроса на предмет повторяющихся ФИО пользователей, наверняка такие есть.
Чтобы уточнить, кому какая роль и где назначена, нужно подключать ещё несколько таблиц - mdl_context, mdl_course, может ещё mdl_course_categories.
Для примера - запрос, показывающий пользователей с ролью студента во всех курсах:
SELECT cr.fullname AS `НАЗВАНИЕ КУРСА`, u.lastname AS `ФАМИЛИЯ`, u.firstname AS `ИМЯ`
FROM mdl_user AS u, mdl_role AS r, mdl_role_assignments AS ra, mdl_context AS cn, mdl_course AS cr
WHERE ra.userid = u.id
AND ra.roleid = r.id
AND cn.id = ra.contextid
AND cr.id = cn.instanceid
AND r.id = 5
ORDER BY cr.fullname ASC, u.lastname ASC