Не выражение GROUP BY пытается подсчитать участников курса - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь сделать оператор SQL, который показывает, какие сотрудники прошли определенный курс более одного раза.Это мой следующий SQL:

SELECT m.mnr, m.name, count(i.cursist) 
FROM employee m, registrations i
WHERE i.cursist = m.mnr
GROUP BY i.cursist;

MNR является основным для сотрудников, а CURSIST является внешним ключом для этого в таблице регистрации.

Возвращает ошибку:

Не группировка по выражению Ошибка в строке: 1 Столбец: 8

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Включить m.mnr, m.name в GROUP BY предложение и исключить i.cursist

SELECT m.mnr, m.name, count(i.cursist) 
FROM employee m inner join 
     registrations i
     on i.cursist = m.mnr
GROUP BY m.mnr, m.name
HAVING count(i.cursist) > 1;

Я использовал явный синтаксис JOIN вместо старого стиля с запятыми

0 голосов
/ 05 июня 2018

Во-первых, никогда используйте запятые в предложении FROM. Всегда используйте правильный, явный, стандартный JOIN синтаксис.

Во-вторых, неагрегированные столбцы идут в GROUP BY.Итак:

SELECT m.mnr, m.name, count(i.cursist) 
FROM employee m JOIN
     registrations i
     ON i.cursist = m.mnr
GROUP BY m.mnr, m.name;

Для более одного раза , вы хотите:

HAVING COUNT(i.cursist) > 1
...