Página 1 de 1

Mesmo select - count em tabelas diferentes

Enviado: Qua, 27 Mai 2015 3:28 pm
por Robson Costa
olá,

Gostaria de fazer um select que trouxesse na mesma linha o count realizado em tabelas diferentes. Ou seja,
tenho 2 selects da seguinte forma:

Selecionar tudo

select s.id,count(*) total1
from tab1 s,tab2 t
where s.id = t.id 
group by s.id;

Selecionar tudo

select s.id,count(*) total2
from tab1 s,tab3 t1
where s.id = t1.id 
group by s.id;
Gostaria de um select que pudesse fazer:

Selecionar tudo

select s.id,count(*) total1,count(*) total2
É possível?

Re: Mesmo select - count em tabelas diferentes

Enviado: Qua, 27 Mai 2015 4:46 pm
por DanielNN
Apesar de não ver tanta prática em fazer desta forma, acredito que uma solução simples (sem alterar sua junção) seria contar as chaves primárias distintas de cada tabela.

Selecionar tudo

count (distinct s.id), count (distinct t.id) 
Outra forma simples seria fazer separadamente o count de cada tabela como subselect.

Re: Mesmo select - count em tabelas diferentes

Enviado: Seg, 08 Ago 2016 10:04 am
por geovani
Olá,

Você pode tentar assim:

Selecionar tudo

Select
 s.id,
 sum(total1) as total1, 
 sum(total2) as total2
From
 (
  select 
    s.id,
	count(*) as total1,
	0 as total2
  from 
    tab1 s,
	tab2 t
  where 
    s.id = t.id
  group by 
    s.id
	
 union all
 
  select 
    s.id,
	0 as total1,
	count(*) as total2
  from 
	tab1 s,
	tab3 t1
  where 
    s.id = t1.id
  group by 
    s.id
 )