Никак не могу понять, каким образом заставить работать фильтрацию в этом блоке.
Создал стандартный запрос, который импортируется прямо из блока, чуть "подправил", чтобы табличка отображалась на русском языке - все отлично, таблица отображает все оценки по всем студентам, курсам и т.д.
---------------------------
SELECT u.firstname AS 'Имя' , u.lastname AS 'Фамилия', CONCAT(u.firstname , ' ' , u.lastname) AS 'Полностью имя-фамилия',
c.fullname AS 'Дисциплина',
cc.name AS 'Категория',
CASE
WHEN gi.itemtype = 'course'
THEN CONCAT(c.fullname, ' - Total')
ELSE gi.itemname
END AS 'Выполнена работа',
ROUND(gg.finalgrade,2) AS Оценка,
FROM_UNIXTIME(gg.timemodified) AS Время
FROM prefix_course AS c
JOIN prefix_context AS ctx ON c.id = ctx.instanceid
JOIN prefix_role_assignments AS ra ON ra.contextid = ctx.id
JOIN prefix_user AS u ON u.id = ra.userid
JOIN prefix_grade_grades AS gg ON gg.userid = u.id
JOIN prefix_grade_items AS gi ON gi.id = gg.itemid
JOIN prefix_course_categories AS cc ON cc.id = c.category
%%FILTER_COURSES:l.courseid%%
WHERE gi.courseid = c.id
ORDER BY lastname
--------------------------
Но таблица, естественно ,получается огромная - надо бы как то ее отфильтровать. Например, по дисциплине, фамилии студента, преподавателя... Но как я ни пытался ставить фильтры - ничего. Как выводило кучу строк, так и выводит. Потом вспомнил, что помимо фильтров, еще и в запросе указывать нужно, что фильтровать. Ну и например, если фильтруется по курсам, нужно вставить строку %%FILTER_COURSES:l.courseid%%
Вставляю. Куда только ни вставлял (я не спец по SQL, поэтому методом научного тыка, по очереди во все строки )
Итог всегда один - теперьб выдается ошибка
------------------------
SELECT u.firstname AS 'Имя' , u.lastname AS 'Фамилия', CONCAT(u.firstname , ' ' , u.lastname) AS 'Полностью имя-фамилия',
c.fullname AS 'Дисциплина',
cc.name AS 'Категория',
CASE
WHEN gi.itemtype = 'course'
THEN CONCAT(c.fullname, ' - Total')
ELSE gi.itemname
END AS 'Выполнена работа',
ROUND(gg.finalgrade,2) AS Оценка,
FROM_UNIXTIME(gg.timemodified) AS Время
FROM mdl_course AS c
JOIN mdl_context AS ctx ON c.id = ctx.instanceid
JOIN mdl_role_assignments AS ra ON ra.contextid = ctx.id
JOIN mdl_user AS u ON u.id = ra.userid
JOIN mdl_grade_grades AS gg ON gg.userid = u.id
JOIN mdl_grade_items AS gi ON gi.id = gg.itemid
JOIN mdl_course_categories AS cc ON cc.id = c.category
AND l.courseid = 861
WHERE gi.courseid = c.id
ORDER BY lastname
LIMIT 0, 5000
[array (
)]
Error code: dmlreadexception
- line 479 of /lib/dml/moodle_database.php: dml_read_exception thrown
- line 1114 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
- line 77 of /blocks/configurable_reports/reports/sql/report.class.php: call to mysqli_native_moodle_database->get_recordset_sql()
- line 122 of /blocks/configurable_reports/reports/sql/report.class.php: call to report_sql->execute_query()
- line 71 of /blocks/configurable_reports/viewreport.php: call to report_sql->create_report()
-------------------------------------------
Я что то не то вставляю? или не туда? Как заставить этот блок фильтровать по запросу?