select distinct b.actor_id
from actor b, rolee br, movie bm, movie_has_genre bmg, genre bg
where bmg.genre_id not in(select mg.genre_id
from actor a, rolee r, movie m, movie_has_genre mg, genre g
where a.actor_id = r.actor_id and r.movie_id = m.movie_id and m.movie_id = mg.movie_id and g.genre_id = mg.genre_id and a.actor_id = 3226)
and b.actor_id = br.actor_id and br.movie_id = bm.movie_id and bm.movie_id = bmg.movie_id and bmg.genre_id = bg.genre_id
and sum(count(distinct mg.genre_id) + count(distinct bmg.genre_id))>=7
group by b.actor_id
У меня есть вышеуказанный запрос mysql, и мне нужна общая сумма подсчета bmg.genre_id и mg.genre_id. Когда я пытаюсь выполнить этот запрос, я получаю НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ГРУППОВОЙ ФУНКЦИИ ОШИБКА 1111.
Какова причина ?
@ SalihK.Chousein Тройной - 1. Понятность для человека 2. Определенность иерархии соединений 3. Позволяет легко переходить к другим типам соединений (например, внешним соединениям)






Поскольку sum является агрегатной функцией, вы можете использовать ее только с предложением Have для групповой фильтрации.
select b.actor_id
from actor b, rolee br, movie bm, movie_has_genre bmg, genre bg
where bmg.genre_id not in(select mg.genre_id
from actor a, rolee r, movie m, movie_has_genre mg, genre g
where a.actor_id = r.actor_id and r.movie_id = m.movie_id and m.movie_id = mg.movie_id and g.genre_id = mg.genre_id and a.actor_id = 3226)
and b.actor_id = br.actor_id and br.movie_id = bm.movie_id and bm.movie_id = bmg.movie_id and bmg.genre_id = bg.genre_id
group by b.actor_id
having sum(count(distinct mg.genre_id) + count(distinct bmg.genre_id))>=7;
Спасибо за ответ, я получаю сообщение об ошибке: Код ошибки: 1054. Неизвестный столбец "mg.genre_id" в "имеющий.
Вы не можете использовать групповые функции в предложении WHERE. Используйте предложение HAVING для групповых функций.
Я не думаю, что проблема в Group by
FROM. Всегда использует правильный, явный, стандартный синтаксисJOIN.