Чем ближе аккредитация, тем больше "пахнет жареным" )))
На этом форуме по теме запросов в вышеуказанном блоке в разных темах есть два замечательных запроса - на количество ресурсов в курсе и количество вопросов в курсе.
У меня эти запросы работают отдельно и всем все нравится. Особенно администрации - вся деятельность налицо, хоть и с оговорками - я привел им пример про один файл с десятью заданиями и десяти файлов с одним заданием.
И сейчас у меня мысль возникла - а можно как то объединить эти два запроса? Чтобы В списке дисциплины после количества тестов сразу выводилось количество вопросов в банке вопросов этой дисциплины?
У меня с тех тем вот такие запросы
на количество ресурсов
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
--------------------------
Насколько сложно это сделать?