Página 1 de 1
Retornar count(*) de 3 tabelas
Enviado: 16 Dez 2016 10:36
por JoséQuintas
Tem jeito mais prático de retornar a quantidade de registros de três tabelas?
MySQL
Código: Selecionar todos
SELECT SUM(QTDAGE) AS TOTALAGE, SUM(QTDINS) AS TOTALINS, SUM(QTDLOC) AS TOTALLOC FROM
(
select COUNT(*) AS QTDAGE, 0 AS QTDINS, 0 AS QTDLOC FROM JPANPAGE
UNION ALL
select 0 AS QTDAGE, count(*) AS QTDINS, 0 AS QTDLOC from JPANPINS
UNION ALL
select 0 AS QTDAGE, 0 AS QTDINS, count(*) AS QTDLOC FROM JPANPLOC
) AS SOMA
Retornar count(*) de 3 tabelas
Enviado: 16 Dez 2016 10:51
por wmanesco
Olha não sei se funciona, pode tentar assim:
Código: Selecionar todos
SELECT table_name, TABLE_ROWS
FROM information_schema.TABLES
where table_name in ('tb1', 'tb2', 'tb3') AND table_schema="nome_do_schema"
group by table_name;
avise se funcionar
Retornar count(*) de 3 tabelas
Enviado: 16 Dez 2016 13:17
por JoséQuintas
Não, o MySQL é meio esquisito nesse ponto, ai são os valores aproximados ou sei lá o que.

- cons2.png (15.02 KiB) Exibido 3544 vezes
Retornar count(*) de 3 tabelas
Enviado: 16 Dez 2016 13:21
por JoséQuintas
E esse "aproximado" é o mesmo que o Heidisql mostra, mas não é a quantidade real.
Retornar count(*) de 3 tabelas
Enviado: 16 Dez 2016 21:13
por wmanesco
será que isso é devido aos registros que já foram deletados?
Retornar count(*) de 3 tabelas
Enviado: 21 Dez 2016 14:04
por JoséQuintas
Um recente, aonde não tem nada deletado.
Apenas estou transferindo o que seria status "excluído" do outro arquivo pra cá, então é sempre apenas inclusão.
A consulta é pelo HEIDISQL
Olhando os totais da base de dados: 3.098
Visualizando a tabela: 1.956
Pedindo a quantidade de registros: 2.567
Ou seja, três totais diferentes: 3.098, 1.956 e 2.567
Não dá pra usar aquele total que tem no MySQL.
Tem que pedir pra somar mesmo.
Retornar count(*) de 3 tabelas
Enviado: 21 Dez 2016 14:16
por JoséQuintas
Achei este, achei até esquisito, mas funciona.
Código: Selecionar todos
select
(
( select count(*) From log_cpc ) +
( select count(*) from log_localidade ) +
( select count(*) from log_logradouro ) +
( select count(*) from log_unid_oper ) +
( select count(*) from log_grande_usuario )
)
as QTD
Retornar count(*) de 3 tabelas
Enviado: 21 Dez 2016 18:47
por wmanesco
Estranho mesmo...
Bacana este método, notou alguma diferença de velocidade para o método que estava usando anteriormente?
Retornar count(*) de 3 tabelas
Enviado: 21 Dez 2016 19:54
por alxsts
Olá!
wmanesco escreveu:Estranho mesmo...
Não me causou estranheza mas é uma forma curiosa. Na verdade, a função agregada
Count() retorna um numérico. A consulta apresentada apenas soma os resultados numéricos retornados. Como se fosse
...
Retornar count(*) de 3 tabelas
Enviado: 21 Dez 2016 21:05
por JoséQuintas
A velocidade é praticamente a mesma, porque tem que contar nos três.
Mas o primeiro mostra totais de cada um, enquanto este mostra total geral.
Vai depender da necessidade.
Retornar count(*) de 3 tabelas
Enviado: 22 Dez 2016 11:51
por wmanesco
alxsts escreveu:
Não me causou estranheza mas é uma forma curiosa. Na verdade, a função agregada Count() retorna um numérico. A consulta apresentada apenas soma os resultados numéricos retornados.
Não entendi..