AJUDA COM SELECT

ALVAROVB2009 28/07/2009 09:22:25
#318085
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
ALVAROVB2009 28/07/2009 16:07:10
#318151
Alguém pode me dar uma luz ....
RICART 28/07/2009 16:31:10
#318157
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?
RCMRO 28/07/2009 16:39:03
#318160
Alvaro,

No lugar de [Ô]WHERE COUNT(Matricula) > 0[Ô] coloca [Ô]HAVING COUNT(Matricula) > 0[Ô], depois do [Ô]FROM[Ô] e antes do [Ô]GROUP BY[Ô]

Abraços,


ALVAROVB2009 28/07/2009 18:09:01
#318172
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
ALVAROVB2009 29/07/2009 09:22:10
#318221


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
RCMRO 29/07/2009 09:56:34
#318223
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
ALVAROVB2009 29/07/2009 11:32:33
#318229
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
ALVAROVB2009 30/07/2009 08:40:30
#318286
Bom Dia alguém mais poderia me ajudar nesse probleminha ...
RICART 30/07/2009 08:46:43
#318288
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.

ALVAROVB2009 30/07/2009 08:54:05
#318289
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
Página 1 de 4 [35 registro(s)]
Tópico encerrado , respostas não são mais permitidas