sqloracle-databaseoracle-sqldeveloperunion-allnot-exists

If select returns 0 then do another select


I have this query that selects data from two different connections

select count (*) from table1
where condition1 = 'answer1'
and time >= sysdate - interval '5' minute

UNION ALL

select count (*) from table2
where condition2 = 'answer2'
AND NOT EXISTS (

select * from table1
where condition = 'answer'
and time >= sysdate - interval '5' minute

);

My problem is that the table2 select doesn't work at all even though there is no data in table1.

Can anybody help me to get this to work, or knows another way to write the query.

The idea is that if select count returns 0 then do another select from different table

Tried googling my way around even lurking here but still didn't get any answers


Solution

  • If table2 is not connected to table1 someway within the NOT EXISTS clause it will never return data because so long as the query returns something it exists.

    If you don't have a way of linking table2 to table1 that you can use as a join within the not exists you can do something like this

    select count (*) from table 1
    where condition = answer
    and time >= sysdate - interval '5' minute
    
    UNION ALL
    
    select count (*) from table2
    where condition2 = answer2
    AND (
      select count(*) from table 1
      where condition = answer
      and time >= sysdate - interval '5' minute
    ) = 0;