Clipper On Line • Ver Tópico - Retornar count(*) de 3 tabelas

Retornar count(*) de 3 tabelas

Discussão sobre SQL

Moderador: Moderadores

 

Retornar count(*) de 3 tabelas

Mensagempor JoséQuintas » 16 Dez 2016 09:36

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

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Retornar count(*) de 3 tabelas

Mensagempor wmanesco » 16 Dez 2016 09:51

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

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
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
wmanesco
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 116
Data de registro: 09 Set 2016 13:18
Cidade/Estado: ITAJAI - SC
Curtiu: 13 vezes
Mens.Curtidas: 4 vezes

Retornar count(*) de 3 tabelas

Mensagempor JoséQuintas » 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 2563 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Retornar count(*) de 3 tabelas

Mensagempor JoséQuintas » 16 Dez 2016 12:21

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

cons3.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Retornar count(*) de 3 tabelas

Mensagempor wmanesco » 16 Dez 2016 20:13

será que isso é devido aos registros que já foram deletados?
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
wmanesco
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 116
Data de registro: 09 Set 2016 13:18
Cidade/Estado: ITAJAI - SC
Curtiu: 13 vezes
Mens.Curtidas: 4 vezes

Retornar count(*) de 3 tabelas

Mensagempor JoséQuintas » 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Retornar count(*) de 3 tabelas

Mensagempor JoséQuintas » 21 Dez 2016 13:16

Achei este, achei até esquisito, mas funciona.

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Retornar count(*) de 3 tabelas

Mensagempor wmanesco » 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?
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
wmanesco
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 116
Data de registro: 09 Set 2016 13:18
Cidade/Estado: ITAJAI - SC
Curtiu: 13 vezes
Mens.Curtidas: 4 vezes

Retornar count(*) de 3 tabelas

Mensagempor alxsts » 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
SELECT 1 + 2 + 3 AS QTD
...
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Retornar count(*) de 3 tabelas

Mensagempor JoséQuintas » 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Retornar count(*) de 3 tabelas

Mensagempor wmanesco » 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..
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
wmanesco
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 116
Data de registro: 09 Set 2016 13:18
Cidade/Estado: ITAJAI - SC
Curtiu: 13 vezes
Mens.Curtidas: 4 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro