Recupere o numero de linhas em duas tabelas utilizando apenas uma query
Existem diversas maneiras para contar de forma simples o numero de linhas em duas tabelas usando uma única query:
Opção 1:
select ( select count(*) from Table1 )
+ ( select count(*) from Table2 )
as total_rows
from my_one_row_table
Opção 2:
select sum(rows)
as total_rows
from (
select count(*) as rows
from Table1
union all
select count(*) as rows
from Table2
) as u
O uso da cláusula UNION ALL é necessário aqui para evitar que quando as tabelas tenham o mesmo numero de linhas, um dos contadores seja descartado (o que ocorre quando usamos o UNION). Note também que o GROUP BY é necessário na query principal porque todas as linhas (produzidas pela subquery UNION ALL) são consideradas um grupo.
Nós também poderíamos usar um CROSS JOIN:
select t1.rows + t2.rows
as total_rows
from (
select count(*) as rows
from Table1
) as t1
cross join (
select count(*) as rows
from Table2
) as t2
O CROSS JOIN funciona porque cada tabela derivada tem somente uma linha.