Просто измените ваш запрос следующим образом.
select t1.field1,
t1.field2,
t2.field3
from
t1,
t2,
t3
where t1.xyz = t2.xyz
AND (t1.status = 'S' OR t1.status = 'W')
AND t3.abc = 'Y'
Редактировать 1:
Зная, что одна таблица отличается в обоих запросах. Следующее должно работать. Я изменил запятую на JOINS
.
select t1.field1,
t1.field2,
t2.field3
from t1 t1
inner join t2 t2
on t1.xyz = t2.xyz
where t1.status IN ( 'S', 'W' )
Я согласен с @xQbert, что CROSS JOIN
с t3 и t4 не требуется. Даже если это увеличивает количество или количество записей, но я не могу думать о какой-либо причине использовать эти таблицы в этом конкретном запросе.
Редактировать 2: После новых обновлений в вопросе следующий запрос должен работать
select t1.field1,
t1.field2,
t2.field3
from t1 t1
inner join t2 t2 on t1.xyz = t2.xyz
left join t3 t3 on t1.xyz = t3.xyz and t3.abc = 'Y'
left join t4 t4 on t1.xyz = t4.xyz and t4.abc = 'Y'
where t1.status IN ( 'S', 'W' )
and (t3.xyz is not null or t4.xyz is not null)