Здравствуйте, ваш пост очень и очень помог мне решить одну задачу, но сейчас попробую оживить тему...
К выводу курсов я прибавила вывод разделов, в которых эти курсы лежат. Еще заметила, что в таблице mdl.course_categories находится колонка depth и path.
depth показывает количество вложенных категорий друг в друга, а path что-то типа шифра
этих категорий. Например,
path /57/62 имеет значение depth 2. Чем больше вложенность в path, тем больше значение depth... В моем случае path /57/62 - это очная форма обучения (57) и направление менеджмент (62).
Допустим, я хочу показать в отчете еще и колонку, к какому направлению и форме обучения относятся мои курсы. На дальнейшую вложенность (depth должен быть меньше или равен 2) мне все равно. То есть если курс находится ниже /57/62/78/80 (последние
2 цифры в моем случае - профиль и семестр), то в колонке бы прописывалось только очная форма обучения и направление менеджмент.
Вопрос, как это оформить в коде (я пока ни бум-бум в sql), чтобы вместо course_categories.path /57/62 отображалось в отчете в одной колонке Очная форма в другой вторая цифра - Направление "Менеджмент"?
Я хочу перечислить в отчете нужные мне path
В моем случае это
/57/58
/57/59
/57/60
/57/61
/57/62
/57/63
/57/216 /223/224 /223/225 и тд. Но при этом, чтобы эти "патчи" имели вполне "человеческое" название в самом отчете. Вот начала мудрить с вашим кодом, практически без изменений... Буду благодарна за любую наводку.
SELECT
c.id AS № ,
c.fullname AS Курс ,
c.shortname AS краткое ,
CONCAT( u.firstname, ' ', u.lastname ) AS TeacherName,
( SELECT COUNT(*) FROM prefix_course_sections sec WHERE c.id = sec.course AND sec.sequence != '' ) AS chapters,
(
SELECT
COUNT(*)
FROM
prefix_course_modules res
WHERE
c.id = res.course
AND res.module IN ( 20, 3, 11, 8, 12, 15, 17 )) AS resourses,
(
SELECT
COUNT(*)
FROM
prefix_course_modules ele
WHERE
c.id = ele.course
AND ele.module IN (
1,
4,
5,
6,
7,
9,
10,
13,
16,
18,
19,
21,
22,
23,
24
)) AS elements,
c.summary AS Описание ,
ct. name AS Направление ,
ct.path AS path,
ct.depth AS DEPTH
FROM
prefix_course AS c
JOIN prefix_context AS ctx ON ctx.instanceid = c.id
JOIN prefix_role_assignments AS ra ON ctx.id = ra.contextid AND ctx.contextlevel = 50
JOIN prefix_user AS u ON u.id = ra.userid
INNER JOIN prefix_course_categories AS ct ON ct.id = c.category
WHERE
ra.roleid = 3
GROUP BY
c.id
HAVING
resourses > 0
AND
elements > 0
AND
№ > 1
ORDER BY
TeacherName ASC
В итоге хочу добиться что-то типа такого. В моем случае я просто в экселе автозаменой забила path