Мне нужно выполнить некоторые SQL, который выглядит следующим образом:Django: Как явным образом сделать запрос с предложением HAVING?
select approve_firm_id,approve_dt,approve_result
from main_approve
group by approve_firm_id
having MAX(approve_dt) and approve_result=0;
это работает (MySQL-5.1), но если я пытаюсь в модели Django, как это:
Approve.objects.annotate(max_dt=Max('approve_dt')).
filter(max_dt__gt=0).filter(approve_result=0).query
запрос генерируется это:
SELECT `main_approve`.`id`, `main_approve`.`approve_result`,
`main_approve`.`approve_dt`, `main_approve`.`approve_user_id`,
`main_approve`.`approve_firm_id`, `main_approve`.`exported_at`,
MAX(`main_approve`.`approve_dt`) AS `max_dt` FROM `main_approve`
WHERE (`main_approve`.`approve_result` = 0)
GROUP BY `main_approve`.`id`
HAVING MAX(`main_approve`.`approve_dt`) > 0
ORDER BY NULL
Мне нужно условие WHERE, чтобы быть ПОСЛЕ предложение GROUP BY.
Mike Atlas, спасибо за исправление, но я имел в виду «Мне нужно, чтобы предложение WHERE было __AFTER__ предложением GROUP BY», поскольку оно действительно выполняется раньше. –