Тексты вопросов (sql-запрос)

Тексты вопросов (sql-запрос)

от Образовательный портал НГУЭУ -
Количество ответов: 5

Добрый день! Нужен отчет по всем вопросам, которые загружены в Moodle с указанием даты создания и изменения вопроса. Я так понимаю, каждый тип вопроса хранится в разных таблицах. 

Подскажите пожалуйста есть ли у кого информация где искать сам текст вопросов? Необходимо понять есть ли дубли вопросов.

Отчет должен содержать поля:

текст вопроса  - курс - дата создания - дата редактирования

В ответ на Образовательный портал НГУЭУ

Re: Тексты вопросов (sql-запрос)

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
Описание общих таблиц лежит в moodle/lib/db/install.xml. Все вопросы лежат в таблице question. Ответы лежат по разным таблицам.
А вот с курсом может быть проблема, т.к. вопросы хранятся в категориях вопросов, которые не всегда привязаны к конкретному курсу.
В вопросе есть поле category которая ссылается на question_categories.id, в которой есть contextid который через context.id указывает на принадлежность к категории курсов/курсу/модулю (context.contextlevel) и конкретный элемент (context.instanceid).
В ответ на Виталий Лавров

Re: Тексты вопросов (sql-запрос)

от Образовательный портал НГУЭУ -
Спасибо большое за информацию. Очень помогли. Начинаем потихоньку копаться и вот тут обнаруживаем, что очень много выводится категорий вопросов с названием "top". Может кто-то подскажет что это?
Плюс еще один вопрос, при импорте вопросов из одного курса в другой курс вопросы пересоздаются с новым id? Или нет?
В ответ на Образовательный портал НГУЭУ

Re: Тексты вопросов (sql-запрос)

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
очень много выводится категорий вопросов с названием "top"
Ну вы и ленивые! Откройте в "Банк вопросов" разделе "Вопросы" выпадающий список "Выберите категорию".
Там для каждого уровня категории есть пункт "Верхний уровень для ..."

Поставьте  блок configurable_reports. Это существенно упростит процесс ковыряния. Там можно сделать любые sql-запросы.

при импорте вопросов из одного курса в другой курс вопросы пересоздаются с новым id? Или нет?
Должны создаваться. При этом тот, кто импортирует становится автором.
В ответ на Виталий Лавров

Re: Тексты вопросов (sql-запрос)

от Образовательный портал НГУЭУ -
Мы не ленивые! Как раз ковыряемся через блок configurable_reports. Вот если бы имя категории name так и выводилось "Верхний уровень для..." вопрос бы не возник. В любом случае спасибо за информацию.
В ответ на Образовательный портал НГУЭУ

Re: Тексты вопросов (sql-запрос)

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle

Имена категорий вопросов можно получить  запросом:

select qc.name,qc.id, cx.contextlevel,cx.instanceid, 'CC/' || cc.name  as xname
  from {question_categories} as qc
  inner join {context} as cx on qc.contextid=cx.id and cx.contextlevel=40
  inner join {course_categories} as cc on cx.instanceid = cc.id
union
select qc.name,qc.id, cx.contextlevel,cx.instanceid,'C/' || cs.shortname as xname
  from {question_categories} as qc
  inner join {context} as cx on qc.contextid=cx.id and cx.contextlevel=50
  inner join {course} as cs on cx.instanceid = cs.id
union
select qc.name,qc.id, cx.contextlevel,cx.instanceid,cs.shortname  || '/' || mm.name || '/' ||  q.name   as xname
  from {question_categories} as qc
  inner join {context} as cx on qc.contextid=cx.id and cx.contextlevel=70
  inner join {course_modules} as cm on cx.instanceid = cm.id
  inner join {course} as cs on cm.course = cs.id
  inner join {modules} as mm on cm.module=mm.id and mm.name='quiz'
  inner join {quiz} as q on cm.instance = q.id

У меня постгрес, т. ч. склейка строк делается оператором '||'. Как оно делается в других БД - не знаю.