Вывод элементов курса + ФИО преподавателя

Re: Вывод элементов курса + ФИО преподавателя

от Vadim Tabunshchik -
Количество ответов: 0
Изображение пользователя Developers

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

Вам запрос нужно писать по другому, вывод преподавателей сохранить во временную таблицу, потом вывести курс с ресурсами и в конце уже сопоставить курс и его преподавателей.

Пример такого запроса, выводящего всех управляющих по всем категориям курсов:

select qq.tmp 'Кафедра'
      ,qq.fio 'ФИО'
  from (

select case
         when @txt = t.name COLLATE utf8mb4_unicode_ci then ''
          else @txt := t.name
       end tmp,
       t.name, t.fio

  from

(SELECT
    cc.name
    ,CONCAT(u.lastname,' ',u.firstname,' ',u.middlename) fio
FROM {user} u
LEFT JOIN {role_assignments} ra ON u.id=ra.userid
LEFT JOIN {context} ctx ON ctx.id=ra.contextid
LEFT JOIN {course_categories} cc ON cc.id=ctx.instanceid
WHERE ra.roleid=1
ORDER BY cc.name, u.lastname) t,

    (select @txt := '') r

) qq

Вывод:

04