Clipper On Line • Ver Tópico - Retornar count(*) de 3 tabelas
Mudar para estilo Clássico
Discussão sobre SQL
Postar uma resposta

Retornar count(*) de 3 tabelas

16 Dez 2016 09:36

Tem jeito mais prático de retornar a quantidade de registros de três tabelas?
MySQL

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

16 Dez 2016 09:51

Olha não sei se funciona, pode tentar assim:

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

16 Dez 2016 12:17

Não, o MySQL é meio esquisito nesse ponto, ai são os valores aproximados ou sei lá o que.

cons1.png


cons2.png
cons2.png (15.02 KiB) Visualizado 2577 vezes

Retornar count(*) de 3 tabelas

16 Dez 2016 12:21

E esse "aproximado" é o mesmo que o Heidisql mostra, mas não é a quantidade real.

cons3.png

Retornar count(*) de 3 tabelas

16 Dez 2016 20:13

será que isso é devido aos registros que já foram deletados?

Retornar count(*) de 3 tabelas

21 Dez 2016 13:04

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

qtd1.png


Visualizando a tabela: 1.956

qtd2.png


Pedindo a quantidade de registros: 2.567

qtd3.png


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

21 Dez 2016 13:16

Achei este, achei até esquisito, mas funciona.

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

21 Dez 2016 17:47

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

21 Dez 2016 18:54

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
Código:
SELECT 1 + 2 + 3 AS QTD
...

Retornar count(*) de 3 tabelas

21 Dez 2016 20:05

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

22 Dez 2016 10:51

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..
Postar uma resposta