SELECT i.* from table1 i WHERE (((i.field1 = 'FA' and (field2 = 'AAA' or field2 = 'BBB') AND i.field3 = 0) AND EXISTS (select * from table2 s where s.table2id = i.table2id AND s.fielda <> 'X' AND s.fieldb <> 'I') AND NOT EXISTS (SELECT * from table3 a where a.table2id = i.table2id AND a.field4 = i.field4)) OR ((i.field1 = 'FA' and (field2 = 'AAA' or field2 = 'BBB') AND i.field3 = 0) AND NOT EXISTS (select * from table2 s where s.table2id = i.table2id) AND NOT EXISTS (SELECT * from table3 a where a.table2id = i.table2id AND a.field4 = i.field4)))