В моем приложении rails я запускаю sql-запрос, используя find_by_sql (), так как мне нужны подзапросы.
Это работает, если я делаю первый или второй запрос, но когда я добавляю их вместе с AND, он начинает жаловаться на более чем 1 строку в подзапросе.
Я хочу вернуть все строки (записи), которые соответствуют критериям. Что нужно исправить / изменить здесь? Что говорит mysql, я хочу только 1 строку?
Вот результирующий SQL, который просматривается в журнале рельсов:
Mysql::Error: Subquery returns more than 1 row: select p.* from policies p
where exists (select 0 from status_changes sc join statuses s on sc.status_id = s.id
where sc.policy_id = p.id
and s.status_category_id = '1'
and sc.created_at between '2009-03-10' and '2009-03-12')
or exists
(select 0 from status_changes sc join statuses s on sc.status_id = s.id
where sc.created_at in
(select max(sc2.created_at)
from status_changes sc2
where sc2.policy_id = p.id
and sc2.created_at < '2009-03-10')
and s.status_category_id = '1'
and sc.policy_id = p.id)
AND (select 0 from status_changes sc
where sc.policy_id = p.id
and sc.status_id = 7
and sc.created_at between '2008-12-31' and '2009-03-12')
or exists
(select 0 from status_changes sc
where sc.created_at in
(select max(sc2.created_at)
from status_changes sc2
where sc2.policy_id = p.id
and sc2.created_at < '2008-12-31')
and sc.status_id = 7
and sc.policy_id = p.id)