Группировка результатов SQL-запроса по столбцу — не работают DISTINCT и GROUP BY

Группировка результатов SQL-запроса по столбцу — не работают DISTINCT и GROUP BY

от Mikhail Apakin -
Количество ответов: 1

Добрый всем день. Я снова про SQL-запросы.

Задача №1: вывести список преподавателей и их курсов, в которых есть хотя бы один элемент и хотя бы один ресурс.

Решение:

SELECT c.id AS No, c.fullname AS kypc
,CONCAT(u.firstname,' ', u.lastname) AS TeacherName
,(SELECT COUNT(*) FROM {course_modules} res WHERE c.id = res.course AND res.module IN (20,3,11,8,12,15,17)) AS resourses
,(SELECT COUNT(*) FROM {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
FROM {course} c
JOIN {context} ctx ON ctx.instanceid = c.id
JOIN {role_assignments} ra ON ctx.id = ra.contextid AND ctx.contextlevel = 50
JOIN {user} u ON u.id = ra.userid
WHERE ra.roleid = 3
HAVING resourses>0 AND elements>0 AND c.id>1
ORDER BY TeacherName

Всё хорошо. Но тут появляется задача №2: сделать список этих же преподавателей без дублирования и их одного любого курса, подходящего под наши требования.

Я смело пишу первую строку как SELECT c.id AS No, DISTINCT u.id, c.fullname AS kypc и внезапно получаю syntax error. Опа, думаю я, Ладно, тогда я пишу последнюю строку как GROUP BY TeacherName и получаю тот же syntax error. Но почему? Сто раз же делал так. В чём засада?