SELECT COM TOTAL DE REGISTROS DE 3 TABELAS?

TAMANINI 21/12/2006 11:05:14
#191428
Eu estou precisando verificar em 3 tabelas se possuem algum registro. Alguém sabe me dizer o que estou fazendo errado?
SELECT Count(e.emp_id) AS Empresas, Count(p.prod_id) AS Produtos, Count(u.uni_id) AS Unidades 
FROM tblEmpresa e, tblProduto p, tblUnid u;


No caso, ao inves de me retornar o total de registros de cada tabela, está vindo sempre o valor 45 para todos.
ESLEYSANCHES 21/12/2006 11:15:35
#191432
já tentou fazer tipo assim:

SELECT COUNT(*), COUNT(*), COUNT(*) FROM <tabela1>, <tabela2>, <tabela3>

Ele irá retornar 3 valor
Abraços !!
TAMANINI 21/12/2006 11:20:56
#191433
Também trouxe o mesmo resultado, 45 nos 3 campos.
Sendo que em uma eu tenho 5 registros e nas outras 2 tabelas tenho 3 registros cada uma.
USUARIO.EXCLUIDOS 21/12/2006 11:26:11
#191435
Resposta escolhida
Cara, posso estar enganado, mas pra pegar os nr de registros das três tabelas, vc tem que usar três selects mesmo, se quiser pode usar o UNION:

SELECT Count(e.emp_id) AS Total, 'EMPRESA' As Tabela FROM tblEmpresa
UNION ALL
SELECT Count(p.prod_id) AS Total, 'PRODUTO' As Tabela FROM tblProduto p
UNION ALL
SELECT Count(u.uni_id) AS Total, 'UNIDADE' As Tabela FROM tblUnid u;


O q retornaria:
[th][/th]
TotalTabela
5EMPRESA
3PRODUTO
3UNIDADE


Qualquer dúvida poste...flw
USUARIO.EXCLUIDOS 21/12/2006 11:32:37
#191437
Ah...tem como trazer num só (imbutindo outros selects):

SELECT Count(e.emp_id) AS Empresas, (SELECT Count(p.prod_id) FROM tblProduto p) AS Produtos, (SELECT Count(u.uni_id) FROM tblUnid u) AS Unidades
FROM tblEmpresa e;

TAMANINI 21/12/2006 11:49:23
#191438
Vlw Matioli, deu certo aqui.
Agora teria como colocar alguma condição dentro do SELECT para verificar se as 3 tabelas possuem algum registro, se uma das 3 trouxer nenhum registro, então eu executo uma outra função. Algo do tipo, se .Recordcount me retornar =0 quer dizer que uma das 3 tabelas não possuem nenhum registro, se me retornar =1, as 3 tabelas possuem pelo menos 1 registro.
CLEVERTON 21/12/2006 11:52:53
#191442
Cara, quando vc usa Funções Agregadas Count() Sum() e não tem nenhum registro, retorna Null

Se se BD For Access, faça assim

SELECT IIf(IsNull(Count(e.emp_id)),0,Count(e.emp_id)) AS Empresas ...

TAMANINI 21/12/2006 14:16:10
#191494
Certo, é em access mesmo, mas eu testei aqui e me retornou o valor 0 sem utilizar o iif(IsNull..., agora teria como fazer dentro do SELECT algo como:
If(count(emp_id) > 0 AND count(prod_id) > 0 AND count(uni_id) > 0)= TRUE...
CLEVERTON 21/12/2006 14:34:16
#191500
Ué, Então faz assim

SELECT IIf(Count(e.emp_id)>0,'Maior que Zero','Igual a Zero') AS Empresas ...

HUGOSSOUZA 21/12/2006 14:36:46
#191503
Citação:

MATIOLI escreveu:


SELECT Count(e.emp_id) AS Empresas, (SELECT Count(p.prod_id) FROM tblProduto p) AS Produtos, (SELECT Count(u.uni_id) FROM tblUnid u) AS Unidades
FROM tblEmpresa e;



pq vc nao trata esse select?
verifica os campos depois q der o select.
ou vc precisa voltar tudo no select mesmo?

TAMANINI 21/12/2006 14:43:01
#191507
Sim, mas não tem como fazer uma condição apenas para as 3 tabelas de uma vez? Senão eu terei que verificar pela propriedade .Fields:
if (.Fields(0) > 0 AND .Fields(1) > 0 AND .Fields(2) > 0) = TRUE then
executa tal função
else
não executa nada
end if
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas