Общий форум

Configurable reports - кол-во ресурсов+кол-во вопросов

 
Изображение пользователя Игорь М
Configurable reports - кол-во ресурсов+кол-во вопросов
 

Чем ближе аккредитация, тем больше "пахнет жареным" улыбаюсь)))

На этом форуме по теме запросов в вышеуказанном блоке в разных темах есть два замечательных запроса - на количество ресурсов в курсе и количество вопросов в курсе. 

У меня эти запросы работают отдельно и всем все нравится. Особенно администрации - вся деятельность налицо, хоть и с оговорками - я привел им пример про один файл с десятью заданиями и десяти файлов с одним заданием.

И сейчас у меня мысль возникла - а можно как то объединить эти два запроса? Чтобы В списке дисциплины после количества тестов сразу выводилось количество вопросов в банке вопросов этой дисциплины? 

У меня с тех тем вот такие запросы

на количество ресурсов

SELECT concat('<a target="_new" href="%%WWWROOT%%/course/index.php?categoryid=', cc.id,'">', cc.name, '</a>') AS "Кафедра",
concat('<a target="_new" href="%%WWWROOT%%/course/view.php?id=',c.id,'">',c.fullname,'</a>') AS "Дисциплина",
(SELECT DISTINCT concat(u.lastname, ' ', u.firstname)
FROM prefix_role_assignments AS ra
JOIN prefix_user AS u ON ra.userid = u.id
JOIN prefix_context AS ctx ON ctx.id = ra.contextid
WHERE ra.roleid = 3 AND ctx.instanceid = c.id AND ctx.contextlevel = 50 LIMIT 1) AS "Преподаватель",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 1) AS "Задание",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 16) AS "Тест",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 3) AS "Книга",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 4) AS "Чат",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 5) AS "Опрос",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 6) AS "База данных",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 7) AS "Обратная связь",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 9) AS "Форум",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 8) AS "Папка",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 10) AS "Глоссарий",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 12) AS "Пояснение",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 13) AS "Лекция",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 14) AS "Внешний ресурс",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 15) AS "Страница",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 17) AS "Файл",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 18) AS "SCORM",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 19) AS "Анкета",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 20) AS "Гиперссылка",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 21) AS "Вики",
(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 22) AS "Семинар"
FROM `prefix_course` AS c
JOIN `prefix_course_categories` AS cc ON cc.id = c.category
WHERE cc.name != 'АРХІВ'
%%FILTER_CATEGORIES:c.category%%
GROUP BY c.id
ORDER BY cc.name ASC

----------------------------------------

А это - на количество вопросов - самый простой из вышеуказанной темы

SELECT
concat('<a target="_blank" href="%%WWWROOT%%/question/edit.php',CHAR(63),'courseid=',c.id,'">',c.fullname,'</a>') 'Курс',
Count(q.id) 'Вопросов'
FROM
{question} q
INNER JOIN {question_categories} qc ON qc.id = q.category AND q.qtype <> 'random' AND q.parent = 0
INNER JOIN {context} ctx ON ctx.id = qc.contextid
INNER JOIN {course} c ON c.id = ctx.instanceid AND ctx.contextlevel = 50
GROUP BY
c.id
ORDER BY
c.fullname

-------------------------

Можно как то их объединить? Повторюсь, что эти запросы для меня сродни китайской азбуке, и методом "научного тыка" мне удалось только добавить еще одну строку "Курс"... И на этом все грущу 

Кстати, чем хорош последний запрос - он показывает только те дисциплины, где есть в банке вопросов хоть один вопрос, пустые он просто не показывает. Но при объединении запросов этого и не нужно - в первом запросе идет фильтрация по кафедрам, и если в дисциплине нет банка вопросов - значит ,это должно показать. 

Чтобы получался примерно вот такой вот результат:

Кафедра - 080101.65 ЭКОНОМИЧЕСКАЯ БЕЗОПАСНОСТЬ

Дисциплина - Экономический анализ

Преподаватель - Иванова ИИ

Заданий - 5

Тестов - 0

Вопросов в банке данных - 0

Модулей типа "Книга" - 0

Чатов - 1

Опросов - 1

Модулей типа "База данных" - 0

Модулей типа "Обратная связь" - 0

Форумов - 1

Папок с файлами - 4

Глоссариев - 1

Модулей "Пояснение" (простой текст) - 3

Модулей "Лекция" (НЕ ФАЙЛ!) - 1

Внешних ресурсов - 0

Веб-страниц - 6

Файлов - 1

ресурсов типа SCORM - 0

Анкет - 2

Гиперссылок - 9

Вики - 1

Модулей типа "Семинар" - 2

--------------------------

Насколько сложно это сделать?

Изображение пользователя Vadim Dvorovenko
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
DevelopersМайнтейнер переводаТестер MoodleЭксперт по Moodle

Как уже писал в другой теме, правильнее вместо

(SELECT COUNT(*) FROM prefix_course_modules AS cm WHERE cm.course = c.id AND cm.module= 16) AS "Тест",

писать

(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'quiz') AS "Тест",

Такой запрос может быть помедленней, но он максимально универсален, и будет без изменения работать на любом moodle.

Для вопросов просто добавьте после семинаров добавьте строчку

(SELECT Count(*)  FROM prefix_question q INNER JOIN prefix_question_categories qc ON qc.id = q.category AND q.qtype <> 'random' AND q.parent = 0 INNER JOIN prefix_context ctx ON ctx.id = qc.contextid WHERE ctx.instanceid = c.id AND ctx.contextlevel = 50) AS 'Вопросов'

Только потом, пожалуйста, выложите сюда полностью готовый и отлаженный запрос, чтобы все могли воспользоваться

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Только потом, пожалуйста, выложите сюда полностью готовый и отлаженный запрос, чтобы все могли воспользоваться

Да, конечно, о чем разговор - вот, что у меня благодаря авторам запросов и Вам получилось и отлично работает:

----------------------------------

SELECT concat('<a target="_new" href="%%WWWROOT%%/course/index.php?categoryid=', cc.id,'">', cc.name, '</a>') AS "Кафедра",
concat('<a target="_new" href="%%WWWROOT%%/course/view.php?id=',c.id,'">',c.fullname,'</a>') AS "Дисциплина",
(SELECT DISTINCT concat(u.lastname, ' ', u.firstname)
FROM
prefix_role_assignments AS ra
JOIN prefix_user AS u ON ra.userid = u.id
JOIN prefix_context AS ctx ON ctx.id = ra.contextid
WHERE ra.roleid = 3 AND ctx.instanceid = c.id AND ctx.contextlevel = 50 LIMIT 1) AS "Преподаватель",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'assign') AS "Задание",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'quiz') AS "Тест",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'book') AS "Книга",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'chat') AS "Чат",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'choice') AS "Опрос",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'data') AS "База данных",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'feedback') AS "Обратная связь",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'forum') AS "Форум",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'folder') AS "Папка",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'glossary') AS "Глоссарий",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'label') AS "Пояснение",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'lesson') AS "Лекция",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'lti') AS "Внешний ресурс",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'page') AS "Страница",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'resource') AS "Файл",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'scorm') AS "SCORM",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'survey') AS "Анкета",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'url') AS "Гиперссылка",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'wiki') AS "Вики",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'workshop') AS "Семинар",
(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'quiz') AS "Тест",
(SELECT Count(*) FROM prefix_question q INNER JOIN prefix_question_categories qc ON qc.id = q.category AND q.qtype <> 'random' AND q.parent = 0 INNER JOIN prefix_context ctx ON ctx.id = qc.contextid WHERE ctx.instanceid = c.id AND ctx.contextlevel = 50) AS 'Вопросов'
FROM `prefix_course` AS c
JOIN `prefix_course_categories` AS cc ON cc.id = c.category
WHERE cc.name != 'АРХІВ'
%%FILTER_CATEGORIES:c.category%%
GROUP BY c.id
ORDER BY cc.name ASC

----------------------------------

Работает фильтр по Категориям курса.

Если у кого-то установлен модуль субкурс, то нужно добавить строку 

(SELECT COUNT(*) FROM prefix_course_modules AS cm INNER JOIN prefix_modules AS m ON cm.module = m.id WHERE cm.course = c.id AND m.name = 'subcourse') AS "Субкурс",

Мне в наших условиях это показалось не нужным и я его не прописывал. 

 

Все отлично работает, гонял по всем категориям - все отлично... Но, как всегда, появилось новое НО... улыбаюсь

Моя логика никак не хочет совпадать с логикой SQL улыбаюсь

Хотел я сделать несколько одинаковых запросов, но сразу на конкретные категории, потому как у нас мудл - это еще и своего рода база данных и в фильтре в выпадающем меню выбора категорий столько этих самых категорий под одинаковыми названиями, что запутаться очень даже легко. Я то приловчился, а вот у других будет "затык".

Значит, полез я в в саму базу SQL (уже без опасения, прогресс улыбаюсь) и нашел там таблицы ,в которых прописаны категории. И вот, например, id категории 172, а называется она Горные машины и оборудование. сама Таблица называется mdl_course_categories И вот куда теперь эти данные подставить в существующем запросе, чтобы выходил не весь список абсолютно всех дисциплин, а только из категории этого самого Горного дела? Если я правильно понимаю, то в запросе cc.id как раз обозначается id категории, а cc.name - имя столбца с названием категории. Пытался подставить эти данные вместо этих сс - но, видимо, это не то. Где что можно изменить, чтобы выводился отчет по конкретной категории?

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Что то не могу нормально код вставить...

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Кстати... а подсчет файлов именно в ресурсе "Папка" возможно сюда приделать? В принципе ,никто не интересовался, просто ради интереса...

Изображение пользователя Vadim Dvorovenko
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
DevelopersМайнтейнер переводаТестер MoodleЭксперт по Moodle

Про папку - можно, но там будет трёхэтажный запрос, поэтому давайте я его не буду писать, если он никому реально не нужен ))

Если у вас в дисциплинах - это подкатегории, то пишите WHERE cc.name != 'АРХІВ' AND cc.parent = 172

Если дисциплины, это уже курсы внутри категории Горное дело, то WHERE cc.name != 'АРХІВ' AND cc.id = 172

Изображение пользователя Виктория Малиатаки
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

А возможен ли запрос на подсчет файлов в Модуле giportfolio? (извините, что встреваю в чужую тему, но я вижу, что вы мне сможете помочь )) )

Дело в том, что у нас в нём реализовано портфолио студентов - средствами модуля созданы разделы, в них, соответственно, файлы. 

С SQL-запросами только начинаю разбираться, поэтому сама сообразить, возможно ли подсчитать кол-во файлов, загруженных студентами в разделы, пока не могу.


Изображение пользователя Alexandre Scherbyna
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
Particularly helpful MoodlersЭксперт по Moodle

Спасибо, но проблема в том, что подсчитываются только тестовые вопросы, содержащиеся в банке курса. А вопросы, содержащиеся в самих тестах, не учитываются.

Посмотрите, Вадим Табунщик предлагал запрос, подсчитывающий сумму вопросов в банке и в тестах. В этом отчете надо показать именно суммарное количество вопросов.

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Да, я видел эту тему, но у нас преподаватели не делают вопросы непосредственно в тесте - как я им изначально показал, как нужно - они так и забивают. улыбаюсь 

Однако и тот запрос я тоже отдельно прописал в блоке - мало ли, на всякий случай. Сперва таки было бы - отдельные запросы, но тогда полной картинки не виделось - у кого что есть, а чего нет по предметам. Например, Банк вопросов показывает списки из 12 дисциплин, а на деле их 35 - и сиди, сверяй потом ,какие есть, каких нет. А должны быть у всех...

Изображение пользователя Alexandre Scherbyna
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
Particularly helpful MoodlersЭксперт по Moodle

Я тоже учу преподавателей, что вопросы надо создавать в банке, но есть люди, которые изучают Moodle самостоятельно, и делают всё интуитивно. Как гласит закон Мерфи: "Если механизм можно собрать неправильным образом, то всегда найдется человек, который так и сделает".

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Ну... Это не про наших... Хотя да - всегда найдется товарищ, которому может просто показаться интересным - "а чей та такое?" улыбаюсь

Изображение пользователя Vadim Dvorovenko
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
DevelopersМайнтейнер переводаТестер MoodleЭксперт по Moodle
Ну тогда нужно писать

(SELECT Count(*) FROM prefix_question q INNER JOIN prefix_question_categories qc ON qc.id = q.category AND q.qtype <> 'random' AND q.parent = 0 INNER JOIN prefix_context ctx ON ctx.id = qc.contextid WHERE ctx.instanceid = c.id AND ctx.contextlevel = 50) +
(SELECT Count(*) FROM {question} q INNER JOIN {question_categories} qc ON q.category = qc.id AND q.qtype <> 'random' AND q.parent = '0' INNER JOIN {context} ctx ON qc.contextid = ctx.id AND ctx.contextlevel = '70' INNER JOIN {course_modules} cm ON ctx.instanceid = cm.id AND cm.module = (SELECT m.id FROM {modules} m WHERE m.name='quiz') WHERE cm.course = c.id)
AS 'Вопросов'


Изображение пользователя Alexandre Scherbyna
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
Particularly helpful MoodlersЭксперт по Moodle

Хочу от всего сообщества поблагодарить Игоря и Вадима за проделанную работу. 

На мой взгляд, в таком отчете нуждается практически каждый сайт.
Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Да я то что... Так, идея, да готовую вилку воткнул в готовую розетку...  смущаюсь

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

ДА, все работает, включая поиск по конкретной категории, все просто отлично! Просто огромное спасибище! 

Изображение пользователя Alexandre Scherbyna
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
Particularly helpful MoodlersЭксперт по Moodle

У меня на одном из сайтов названия категорий на верхних уровнях - разные, а на самом нижнем уровне они совпадают (в разных филиалах есть одноименные кафедры). Поэтому, когда выбираешь название кафедры остается непонятным, к какому филиалу она относится. грущу Не хотелось бы из-за этого добавлять в названия кафедр аббревиатуру филиала.

Есть ли возможность если не фильтровать, то хотя бы выводить отчет отсортированным по филиалам (то есть по категориям курсов верхних уровней), или хотя бы выводить их названия перед названием кафедры в отчете?

Спасибо!

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Я у себя сделал фильтры по конкретным категориям, например, Отчет по специальности "Горное дело" - и указал id конкретной категории в строке

WHERE cc.name != 'АРХІВ' AND cc.id = 175

вот 175 - это номер категории. У меня, кстати, специальность - это именно подкатегории, которые находятся в основной категории "УМК дисциплин". Ну, как выше предлагал Вадим.

Об этом речь?

Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

А вот кстати... По преподавателям у меня так и не получилось сделать фильтрацию. Что то делаю не так, но что - не пойму. Где в запросе, например, id преподавателя дописать, чтобы по нему вся эта информация выводилось, что в вышеуказанном запросе?

Изображение пользователя Vadim Dvorovenko
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
DevelopersМайнтейнер переводаТестер MoodleЭксперт по Moodle
По преподавателям просто так не сделаете, нужно переписывать запрос. Потому что сейчас у вас выводятся все курсы из категории, а преподаватель определяется вложенным запросом, как первый из тех, кому назначена роль преподавателя в курсе.
Тут тогда придётся объединять курсы, категории, контексты, роли и назначения ролей в основной запрос и из него уже фильтровать по пользователям. Соответственно, если 2 преподавателя ведут курс, в этом случае без фильтрации в отчёте один курс будет фигурировать 2 раза, с одним и со вторым преподавателем. А если роль не назначена (наследуется сверху), то курса не будет в списке вообще. как-то так

SELECT

  concat(u.lastname, ' ', u.firstname) AS "Преподаватель",

  concat('<a target="_new" href="%%WWWROOT%%/course/view.php?id=',c.id,'">',c.fullname,'</a>') AS "Курс",

  ...

FROM

prefix_course_categories AS cc

INNER JOIN prefix_course AS c ON c.category = cc.id

INNER JOIN prefix_context AS ctx ON ctx.instanceid = c.id AND ctx.contextlevel = 50

INNER JOIN prefix_role_assignments AS ra ON ra.contextid = ctx.id

INNER JOIN prefix_user AS u ON u.id = ra.userid

INNER JOIN prefix_role AS r ON r.id = ra.roleid AND r.name = 'teacher'

 

WHERE 1 = 1

%%FILTER_CATEGORIES:c.category%%

%%FILTER_USERS:u.id%%

ORDER BY cc.name, u.lastname, u.firstname, c.fullname ASC



или добавить в WHERE  исходного запроса

AND EXISTS (SELECT 1 FROM prefix_role_assignments AS ra JOIN prefix_user AS u ON ra.userid = u.id JOIN prefix_context AS ctx ON ctx.id = ra.contextid WHERE ra.roleid = 3 AND ctx.instanceid = c.id AND ctx.contextlevel = 50 %%FILTER_USERS:u.id%%)
Изображение пользователя Игорь М
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Так... А это вписывать ВМЕСТО имеющегося в вышеуказанном готовом шаблоне участка кода? 

Изображение пользователя Vadim Dvorovenko
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
DevelopersМайнтейнер переводаТестер MoodleЭксперт по Moodle

если нужно вывести название родителя, добавьте отдельную колонку

(SELECT cc1.name from `prefix_course_categories` AS cc1 where cc1.id = cc.parent) as "Родитель",

если родителя родителя

(SELECT (SELECT cc2.name from `prefix_course_categories` AS cc2 where cc2.id = cc1.parent) from `prefix_course_categories` AS cc1 where cc1.id = cc.parent) as "РодительРодителя",


Изображение пользователя Alexandre Scherbyna
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
Particularly helpful MoodlersЭксперт по Moodle

Спасибо, Вадим! Прекрасно работает. Как говорится, аппетит приходит во время еды. улыбаюсь

А колонку с количеством записанных на курс студентов можно в этот отчет добавить?

Изображение пользователя Alexandre Scherbyna
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
Particularly helpful MoodlersЭксперт по Moodle

Спасибо. А есть возможность не прописывать каждый раз 175 и т.п. руками, а автоматически подставлять номер той категории, из которой вызывается отчет?

Изображение пользователя Victor Sundukov
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 
Уважаемые коллеги, помогите неопытному администратору. Установил плагин, но не знаю как к нему обратиться. MOODLE 3.3.1+. Как его увидеть и как его настроить?1
Изображение пользователя Victor Sundukov
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Обратился к вам и помогло, после переключения интерфейса в настройках обращение к плагину появилось в блоках!

Изображение пользователя Виктория Малиатаки
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 
Спасибо за отличный отчет. Очень полезно и своевременно.

Может быть пригодится кому - попыталась добавить к нему вывод количества студентов и количество разделов в курсе.  Возможно, правда, "криво" добавила, ибо только начинаю разбираться в SQL. Но работает же )    На латинице названия, так как на Windows ...


................ //....................

WHERE ra.roleid = 3 AND ctx.instanceid = c.id AND ctx.contextlevel = 50 LIMIT 1) AS "Prepodavatel",


(SELECT COUNT(*)

FROM

prefix_role_assignments AS ra

JOIN prefix_user AS u ON ra.userid = u.id

JOIN prefix_context AS ctx ON ctx.id = ra.contextid

WHERE ra.roleid = 5 AND ctx.instanceid = c.id AND ctx.contextlevel = 50 LIMIT 1) AS "Studentov",

(SELECT COUNT(*) FROM {course_sections} sec WHERE c.id = sec.course AND sec.sequence!='') AS "Kol-vo razdelov",

Изображение пользователя Vadim Dvorovenko
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
DevelopersМайнтейнер переводаТестер MoodleЭксперт по Moodle

Да, Вы всё правильно сделали.

Есть советы:

не мешать нотацию {course_sections} и prefix_course_section, делать весь запрос в одной нотации. Лично мне удобнее делать так - в phpmyadmin отработать весь запрос в варианте mdl_имятаблицы. После этого в блокнот, замену mdl_ на prefix_, и этот запрос уже в configurable reports.

По ролям. Чтобы на зависеть от идентификаторов и чтобы было также универсально, как и с модулями вместо

prefix_role_assignments AS ra
JOIN prefix_user AS u ON ra.userid = u.id
JOIN prefix_context AS ctx ON ctx.id = ra.contextid
WHERE ra.roleid = 5 AND ctx.instanceid = c.id AND ctx.contextlevel = 50
лучше

prefix_role_assignments AS ra
JOIN prefix_user AS u ON ra.userid = u.id
JOIN prefix_context AS ctx ON ctx.id = ra.contextid
JOIN prefix_role AS r ON r.id = ra.roleid

WHERE r.shortname = 'student' АND ctx.instanceid = c.id AND ctx.contextlevel = 50

Кстати, я ошибся в одном сообщений выше, там должно быть

r.shortname = 'teacher' вместо r.name = 'teacher'
И если у Вас хороший запрос получился, вы его проверили в работе, не поленитесь выложить его целиком, чтобы желающим не приходилось потом по всем сообщениям форума его собирать по кусочкам

Изображение пользователя Виктория Малиатаки
Re: Configurable reports - кол-во ресурсов+кол-во вопросов
 

Спасибо, учту на будущее.