AJUDA COM SELECT
Galera eu estou usando o datareport, acess e o que estou tentando fazer é não deixar que se exiba as empresas que não tenham associado selecionados, para que não seja exibida uma página em branco com cabeçalho e tudo, o código abaixo está no dataenvironment no command2 (associados) que se relaciona com o command1(Empresas).
Será que alguém pode me dar uma força nesse problema?
Fiz algumas tentativas más foram em vão, ele dá a mensagem que falta parametro 1
WHERE COUNT(matricula) > 0
WHERE Total > 0
SELECT COUNT(matricula) AS Total, matricula, nomeAssociado,
codEmpr, dtInscricao, Chapa, bairroAssociado, endAssociado,
estadoAssociado, cidadeAssociado, telAssociado
FROM tbAssociados a
GROUP BY matricula, nomeAssociado, codEmpr, dtInscricao,
Chapa, bairroAssociado, endAssociado, estadoAssociado,
cidadeAssociado, telAssociado
Agradeço quem puder me ajudar
Será que alguém pode me dar uma força nesse problema?
Fiz algumas tentativas más foram em vão, ele dá a mensagem que falta parametro 1
WHERE COUNT(matricula) > 0
WHERE Total > 0
SELECT COUNT(matricula) AS Total, matricula, nomeAssociado,
codEmpr, dtInscricao, Chapa, bairroAssociado, endAssociado,
estadoAssociado, cidadeAssociado, telAssociado
FROM tbAssociados a
GROUP BY matricula, nomeAssociado, codEmpr, dtInscricao,
Chapa, bairroAssociado, endAssociado, estadoAssociado,
cidadeAssociado, telAssociado
Agradeço quem puder me ajudar
Alguém pode me dar uma luz ....
A sua solicitação não está muito clara. A sua consulta não elimina os registros que vc não deseja? Qual o problema em passar a consulta somente com os registros que vc precisa?
Alvaro,
No lugar de [Ô]WHERE COUNT(Matricula) > 0[Ô] coloca [Ô]HAVING COUNT(Matricula) > 0[Ô], depois do [Ô]FROM[Ô] e antes do [Ô]GROUP BY[Ô]
Abraços,
No lugar de [Ô]WHERE COUNT(Matricula) > 0[Ô] coloca [Ô]HAVING COUNT(Matricula) > 0[Ô], depois do [Ô]FROM[Ô] e antes do [Ô]GROUP BY[Ô]
Abraços,
RCMRO e RICART obrigado pelo retorno e RCMRO amanhã estarei testando esse comando, pois no momento naum estou mais trabalhando
Agradeço a ajuda de vcs
Agradeço a ajuda de vcs
RCMRO infelizmente não deu certo, pois ele ainda apareceu empresa que estava sem assosciados.
Segue o sql para darem uma olhada e a imagem do relatório
SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr order by e.codempr} AS Command1 APPEND ({ SELECT count(A.matricula) as Total,a.chapa,a.matricula,a.nomeassociado, a.codempr, a.dtInscricao, a.bairroAssociado , a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado FROM tbassociados a Where a.demAssociado <> [ô]__/__/____[ô] and a.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado HAVING COUNT(matricula) > 0 order by a.NomeAssociado ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2
Ricart o que esta acontecendo é o que você comentou, o select está trazendo coisa que não é para trazer, acho que na imagem consigo mostrar o que desejo.
Não é parta sair a empresa sem associado
Abraço a todos
Alvaro,
Coloquei 2 situações abaixo pois ainda não entendi 100% o que deseja mas, no primeiro SELECT são retornados todos os ASSOCIADOS que atendam ao WHERE e somente as empresas a tenham associados. No segundo, retorna somente as empresas que possuem algum associado e a quantidade de associados que cada uma tem.
Ai vai o código:
-----------------------------------------------------------------
-- RETORNO DAS EMPRESAS E DOS ASSOCIADOS --
-- Obs.: O DISTINCT só é necessário caso exista mais de um --
-- associado com a mesma matricula na mesma empresa. --
-- Se não for o caso, retire o DISTINCT --
SELECT DISTINCT
e.codempr,
e.nomeempr,
a.chapa,
a.matricula,
a.nomeassociado,
a.dtInscricao,
a.bairroAssociado,
a.endAssociado,
a.estadoAssociado,
a.cidadeAssociado,
a.telAssociado
FROM tbempresas e
INNER JOIN tbassociados a
ON e.codempr = a.codempr
WHERE a.demAssociado <> [ô]__/__/____[ô]
AND a.dtInscricao >= #01/01/1900#
AND a.dtInscricao <= #12/31/9999#
GROUP BY e.codempr, e.nomeempr, a.chapa, a.matricula, a.nomeassociado,
a.nomeassociado, a.dtInscricao, a.dtInscricao, a.bairroAssociado,
a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado
ORDER BY e.codempr, a.chapa, a.matricula
-- RETORNO SOMENTE DAS EMPRESAS QUE POSSUEM ASSOCIADOS --
SELECT e.codempr,
e.nomeempr,
COUNT(A.matricula) AS Total
FROM tbempresas e
INNER JOIN tbassociados a
ON e.codempr = a.codempr
WHERE a.demAssociado <> [ô]__/__/____[ô]
AND a.dtInscricao >= #01/01/1900#
AND a.dtInscricao <= #12/31/9999#
HAVING COUNT(A.matricula) > 0
GROUP BY e.codempr, e.nomeempr
ORDER BY e.codempr
Coloquei 2 situações abaixo pois ainda não entendi 100% o que deseja mas, no primeiro SELECT são retornados todos os ASSOCIADOS que atendam ao WHERE e somente as empresas a tenham associados. No segundo, retorna somente as empresas que possuem algum associado e a quantidade de associados que cada uma tem.
Ai vai o código:
-----------------------------------------------------------------
-- RETORNO DAS EMPRESAS E DOS ASSOCIADOS --
-- Obs.: O DISTINCT só é necessário caso exista mais de um --
-- associado com a mesma matricula na mesma empresa. --
-- Se não for o caso, retire o DISTINCT --
SELECT DISTINCT
e.codempr,
e.nomeempr,
a.chapa,
a.matricula,
a.nomeassociado,
a.dtInscricao,
a.bairroAssociado,
a.endAssociado,
a.estadoAssociado,
a.cidadeAssociado,
a.telAssociado
FROM tbempresas e
INNER JOIN tbassociados a
ON e.codempr = a.codempr
WHERE a.demAssociado <> [ô]__/__/____[ô]
AND a.dtInscricao >= #01/01/1900#
AND a.dtInscricao <= #12/31/9999#
GROUP BY e.codempr, e.nomeempr, a.chapa, a.matricula, a.nomeassociado,
a.nomeassociado, a.dtInscricao, a.dtInscricao, a.bairroAssociado,
a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado
ORDER BY e.codempr, a.chapa, a.matricula
-- RETORNO SOMENTE DAS EMPRESAS QUE POSSUEM ASSOCIADOS --
SELECT e.codempr,
e.nomeempr,
COUNT(A.matricula) AS Total
FROM tbempresas e
INNER JOIN tbassociados a
ON e.codempr = a.codempr
WHERE a.demAssociado <> [ô]__/__/____[ô]
AND a.dtInscricao >= #01/01/1900#
AND a.dtInscricao <= #12/31/9999#
HAVING COUNT(A.matricula) > 0
GROUP BY e.codempr, e.nomeempr
ORDER BY e.codempr
RCMRO obrigado pelo retorno
Estive olhando o seu select e ainda nao testei, más deixa eu explicar o porque não dará certo nos dois
No primeiro não tem a cláusula Having e era exatamente o que eu tinha antes e no segundo o group by tem que conter todos os campos
Explicação detalhada
O que eu preciso é que meu select não traga as empresas que não possuem associados, para que não aconteça o que esta a esquerda na imagem e preciso quando a empresa possui associados exibir os dados dos mesmos.
E no select tem que ter o group by tem que todos os campos do associado, pois esses campo vão no datareport na parte de group para serem exibidos, pois como são são duas tabelas tem que ser feito dessa maneira
Acho que consegui passar o que é cada coisa
Abraço e obrigado pelo retorno
Estive olhando o seu select e ainda nao testei, más deixa eu explicar o porque não dará certo nos dois
No primeiro não tem a cláusula Having e era exatamente o que eu tinha antes e no segundo o group by tem que conter todos os campos
Explicação detalhada
O que eu preciso é que meu select não traga as empresas que não possuem associados, para que não aconteça o que esta a esquerda na imagem e preciso quando a empresa possui associados exibir os dados dos mesmos.
E no select tem que ter o group by tem que todos os campos do associado, pois esses campo vão no datareport na parte de group para serem exibidos, pois como são são duas tabelas tem que ser feito dessa maneira
Acho que consegui passar o que é cada coisa
Abraço e obrigado pelo retorno
Bom Dia alguém mais poderia me ajudar nesse probleminha ...
Alvaro,
Se vc me enviar uma cópia do bd com as tabelas e com alguns registros, poderei montar a query pra você. Assim fica mais fácil.
Se vc me enviar uma cópia do bd com as tabelas e com alguns registros, poderei montar a query pra você. Assim fica mais fácil.
Ricart agradeço pelo retorno, só que tem um pequeno problema, eu trabalho em casa conectado na máquina do cliente e lá a internet é travada, eu me conecto através do logmein, não sei se vc conhece, más o meu cliente tem um programa que trava a utilização da internet através dos navegadores, então com isso não tem como eu te passar o banco.
Será que não daria para vc me mandar a query com base nos código que ja passei aki?
Abraço
Obs: E agora ele não esta na sala para colocar a senha para desbloquear
Será que não daria para vc me mandar a query com base nos código que ja passei aki?
Abraço
Obs: E agora ele não esta na sala para colocar a senha para desbloquear
Tópico encerrado , respostas não são mais permitidas