2014-12-02 2 views
2

С недавним обновлением до Moodle 2.7, наш клиент сообщает о сбоях в отчетах CustomSQL. Например, this query используется для отчета gradeable элементов, но не может в настоящее время:Изменения схемы Moodle?

SELECT 
u.firstname AS "First", 
u.lastname AS "Last", 
c.fullname AS "Course", 
a.name AS "Assignment" 

FROM prefix_assignment_submissions AS asb 
JOIN prefix_assignment AS a ON a.id = asb.assignment 
JOIN prefix_user AS u ON u.id = asb.userid 
JOIN prefix_course AS c ON c.id = a.course 
JOIN prefix_course_modules AS cm ON c.id = cm.course 

WHERE asb.grade < 0 AND cm.instance = a.id 
AND cm.module = 1 
ORDER BY c.fullname, a.name, u.lastname 

Быстрый запрос или два к БД показывает, что нулевые строки в prefix_assignment_submissions и prefix_assignment. Предложения?

+0

Какой двигатель db использует moodle? MySql? –

+0

Этот код использует плагин customSQL для Moodle, но это MySQL на сервере. – jldugger

ответ

2

Модуль назначения был заменен модулем назначения в Moodle 2.2.

Старый модуль назначения был отключен по умолчанию в Moodle 2.5 (я думаю) и полностью удален в Moodle 2.7.

Запрос потребует перезаписи, чтобы использовать таблицу assign_submissions (и любые другие соответствующие таблицы assign_ *, которые являются релевантными).

1

У меня нет полного ответа для вас, но могу вам сказать, что я также администрирую систему Moodle 2.7, а таблица prefix_assignment_submissions также не имеет записей.

Кроме того, я могу дать вам следующий запрос, который я написал, чтобы сообщить о окончательных оценках курса. Мы используем этот запрос для моделирования хранения в течение семестра и для импорта окончательных оценок в нашу студенческую информационную систему в конце каждого срока, где idnumber в таблице mdl_course всегда будет соответствовать коду курса, за которым следует код года/термина в нашем студенческая информационная система. Я думаю, что это может быть полезно из-за того, как он использует таблицу mdl_grade_items: в этой таблице больше itemtypes, чем только course. В этой таблице неклассифицированный элемент будет иметь значение NULL в поле finalgrade. К сожалению, я не знаю внутренних компонентов Moodle, чтобы гарантировать, что в каждой таблице будет запись в каждой таблице, но это исходное место.

SELECT u.username,u.lastname, u.firstname,c.shortname, left(c.idnumber, character_length(c.idnumber)-6) AS crs_cde, 
      right(c.idnumber,5) as yearterm,cast((gg.finalgrade/case when gi.grademax = 0 then 1 else gi.grademax end) * 100 as numeric(5,2)) finalgrade, 
     (SELECT l.letter 
      FROM mdl_context x 
      INNER JOIN mdl_grade_letters l ON l.contextid = x.id 
      WHERE x.instanceid in (c.id, 0) and l.lowerboundary <= round((gg.finalgrade/case when gi.grademax = 0 then 1 else gi.grademax end)*100,2) 
      ORDER BY x.id desc, lowerboundary desc limit 1) letter 
FROM mdl_grade_grades gg 
INNER JOIN mdl_grade_items gi ON gi.id=gg.itemid 
INNER JOIN mdl_user u ON u.id=gg.userid 
INNER JOIN mdl_course c on c.id = gi.courseid 
INNER JOIN mdl_course_categories c2 on c2.id = c.category 

WHERE gi.itemtype='course' and c2.visible = 1 and gg.finalgrade is not null 
      and char_length(c.idnumber) > 0 and right(c.idnumber,5)='20151'; 

Мы переехали из MySQL в PostgreSQL, когда мы обновили до 2.7, но только изменения, которые я должен сделать, чтобы наши запросы были для обработки дат.

Следует также отметить, что модуль назначения был полностью переработан для версии 2.3, и многие документы для 2.3, 2.4, 2.5 и т. Д. Были просто скопированы из предыдущей версии. Я видел, что другие изменения были упущены этим процессом. Это особенно относится к чему-то вроде отчета. Возможно, вы все еще видите sql, который недействителен с 2.3.

Смежные вопросы