как добавить, чтобы считать с SUM () в MySQL? - PullRequest
0 голосов
/ 31 мая 2018
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, и мне нужна полная сумма count bmg.genre_id и mg.genre_id.Когда я пытаюсь выполнить этот запрос, я получаю НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ОШИБКИ ФУНКЦИИ ГРУППЫ 1111.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вы не можете использовать групповые функции в предложении WHERE.Используйте предложение HAVING для групповых функций.

0 голосов
/ 31 мая 2018

Так как сумма является агрегатной функцией, вы можете использовать ее только с предложением 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;
...