Каркас: Рельсы 2.3.8
База данных; PostgreSQL
В настоящее время у меня есть следующие операторы SQL (сгенерированные Rails)
SELECT "outbreaks".* FROM "outbreaks" INNER JOIN "bacterial_agents" ON bacterial_agents.outbreak_id = outbreaks.id INNER JOIN "bacteria" ON "bacteria".id = "bacterial_agents".bacterium_id WHERE (bacteria.name ILIKE E'%VTEC O157%')
SELECT "outbreaks".* FROM "outbreaks" INNER JOIN "viral_agents" ON viral_agents.outbreak_id = outbreaks.id INNER JOIN "virus" ON "virus".id = "viral_agents".virus_id WHERE (virus.name ILIKE E'%NOROVIRUS%')
Со следующими таблицами (я пропустил неиспользуемые атрибуты, а наименование макета / ключа соответствует соглашениям Rails)
outbreaks
id
bacterial_agents
id
outbreak_id
bacterium_id
bacteria
id
name
viral_agents
id
outbreak_id
virus_id
viruses
id
name
Любые идеи о том, как бы объединить два приведенных выше оператора SQL с условием «ИЛИ», чтобы выбрать записи о вспышках, которые связаны с таблицей бактерий, в которой значение bacet.name равно «VTEC O157» ИЛИ, связанное с таблицей вирусов, где имя вируса похоже на "Норовирус"?
* EDIT
Отсутствие пояснений по поводу генерации SQL Rails - в настоящее время выводится следующий SQL
SELECT "outbreaks".* FROM "outbreaks" INNER JOIN "bacterial_agents" ON bacterial_agents.outbreak_id = outbreaks.id INNER JOIN "bacteria" ON "bacteria".id = "bacterial_agents".bacterium_id INNER JOIN "viral_agents" ON outbreaks.id = viral_agents.outbreak_id INNER JOIN "viruses" ON "viral_agents".virus_id = "viruses".id WHERE ((bacteria.name ILIKE E'%VTEC O157%') AND (viruses.name ILIKE E'%NOROVIRUS%')) LIMIT 1
По сути, я хочу вывести объединенные результаты из первых двух операторов в формат, аналогичный приведенному выше (с условием «ИЛИ» вместо «И»). Однако, если это невозможно, мне просто нужно написать область действия для обработки объединения SQL.
Подумайте, судя по ответам ниже, я пойду с объединением двух отдельных утверждений, ура:)