>>SELECT i.* from table1 i >> WHERE (i.field1 = 'FA' and field2 IN('AAA','BBB') AND i.field3 = 0) >> AND NOT EXISTS (SELECT * from table3 a WHERE a.table2id = i.table2id AND a.field4 = i.field4)) >> AND (EXISTS (SELECT * from table2 s WHERE s.table2id = i.table2id AND s.fielda <> 'X' AND s.fieldb <> 'I') >> OR NOT EXISTS (SELECT * from table2 s WHERE s.table2id = i.table2id)) >>>>>I think this works:
>>>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))) >>>