Aprenda PL/SQL

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
  

Mensagemem Qua, 27 Mai 2015 3:28 pm

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:

Código: Selecionar todos
select s.id,count(*) total1
from tab1 s,tab2 t
where s.id = t.id
group by s.id;


Código: Selecionar todos
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:

Código: Selecionar todos
select s.id,count(*) total1,count(*) total2


É possível?
Robson Costa
Localização: Campo Grande - MS

Mensagemem Qua, 27 Mai 2015 4:46 pm

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.

Código: Selecionar todos
count (distinct s.id), count (distinct t.id)


Outra forma simples seria fazer separadamente o count de cada tabela como subselect.
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.

Mensagemem Seg, 08 Ago 2016 10:04 am

Olá,

Você pode tentar assim:

Código: Selecionar todos
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
)
geovani
Localização: Joinville-SC

Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com



Voltar para SQL

Quem está online

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