Mesmo select - count em tabelas diferentes

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Robson Costa
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 155
Registrado em: Sex, 17 Out 2008 6:05 pm
Localização: Campo Grande - MS

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?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

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.
geovani
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Sáb, 06 Ago 2016 9:22 am
Localização: Joinville-SC
Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com

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
 )
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes