По сути, вы не можете ссылаться на псевдоним столбца в предложении where. Взгляните на этот вопрос , чтобы узнать, как это обойти.
Кроме того, вы должны добавить в группу все неагрегированные столбцы, присутствующие в операторе select
, в данном случае c.id
и c.title
.
Трудно переписать этот запрос для вас, потому что логику немного сложно понять (из-за неправильной группировки).
Изменить:
После второй мысли вам, возможно, просто нужно исправить group by
.
select c.id, c.title, sum(some_expression) as ratio
from doesntmatter
where c.active = 1 or (c.active = 0 and c.deactivated in (1, 2, 3, 4, 5))
group by c.id, c.title
having ratio = 1.0
Или, может быть:
select f.rid, sum(some_expression) as ratio
from doesntmatter
where c.active = 1 or (c.active = 0 and c.deactivated in (1, 2, 3, 4, 5))
group by f.rid
having ratio = 1.0
Я не могу помочь вам с предыдущей частью, потому что я не знаю полей, данных ваших таблиц или того, как их интерпретировать. Но выбор полей, отсутствующих в группе, - плохая идея. В любом случае, помните, что вы всегда можете присоединиться к исходным таблицам и получить необходимую информацию, а не только поля, отображаемые в select
.