SELECT COM TOTAL DE REGISTROS DE 3 TABELAS?
Eu estou precisando verificar em 3 tabelas se possuem algum registro. Alguém sabe me dizer o que estou fazendo errado?
No caso, ao inves de me retornar o total de registros de cada tabela, está vindo sempre o valor 45 para todos.
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.
já tentou fazer tipo assim:
SELECT COUNT(*), COUNT(*), COUNT(*) FROM <tabela1>, <tabela2>, <tabela3>
Ele irá retornar 3 valor
Abraços !!
SELECT COUNT(*), COUNT(*), COUNT(*) FROM <tabela1>, <tabela2>, <tabela3>
Ele irá retornar 3 valor
Abraços !!
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.
Sendo que em uma eu tenho 5 registros e nas outras 2 tabelas tenho 3 registros cada uma.
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:
O q retornaria:
[th]
Qualquer dúvida poste...flw
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:
Total | Tabela | [/th]
5 | EMPRESA |
3 | PRODUTO |
3 | UNIDADE |
Qualquer dúvida poste...flw
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;
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.
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.
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 ...
Se se BD For Access, faça assim
SELECT IIf(IsNull(Count(e.emp_id)),0,Count(e.emp_id)) AS Empresas ...
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...
If(count(emp_id) > 0 AND count(prod_id) > 0 AND count(uni_id) > 0)= TRUE...
Ué, Então faz assim
SELECT IIf(Count(e.emp_id)>0,'Maior que Zero','Igual a Zero') AS Empresas ...
SELECT IIf(Count(e.emp_id)>0,'Maior que Zero','Igual a Zero') AS Empresas ...
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?
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
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
Tópico encerrado , respostas não são mais permitidas