AJUDA COM SELECT

MARCELO.TREZE 30/07/2009 21:52:24
#318406
Bo o caminho esta correto, apenas a colocação que não estamos encontrando

mas o jeito é testar, então analizando vi outra possibilidade

SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr And a.codempr IS NOT NULL  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.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado  order by a.Matricula ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2


por favor tente mais uma vez agora
ALVAROVB2009 31/07/2009 09:53:14
#318431
Marcelo-Treze obrigado pelo retorno, o meu código ficou assim:
SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr And a.codempr IS NOT NULL 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.codAssociado <> 0 and a.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado order by a.Chapa ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2

Más seu a mensagem
Sem suporte para a expressão de associação

Posso estar enganado, más esse comando que estamos tentado fazer, ele pega os dados do banco que não estão nulos não é isso?

Pensei nisso agora de manhã, onde a gente pode estar batendo
Más o que eu preciso é que no resultado não saiam as empresas que através do filtro, deixem de ter associados selecionados, pois no meu banco, todas as empresas tem associados vinculados, nem que seja 1, e com isso todas as empresas entram na seleção e por isso que elas devem estar saindo em branco.

Por exemplo tem uma empresa a Gyotoku e ela tem 236 associados, só que quando eu seleciono, associados demitidos ela não tem nenhum, então no relatório ela não poderia ser impressa, é isso
Existem associados para todas as empresas porém dependendo da seleção que fazemos, as empresas não tem associados que se enquadram no filtro

Por isso que pensei em um contador e tentar que ele exiba somente as empresas que através do filtro tenha mais que 1 associado.

Será que meu pensamento está errado quanto a esse comando?
Se tiver eu retiro tudo o que disse
Abraço
ALVAROVB2009 31/07/2009 15:30:42
#318471
Pessoal alguém pode me ajudar nesse pepino
DANIKULL 31/07/2009 16:46:26
#318473
ALVAROVB2009, boa tarde.

Deixa eu fazer umas perguntas.
Há possibilidades de um assossiado esteja em mais de uma empresa???
A amarração que você esta fazendo é tipo chave estrangeira, ou seja, a tabela esta normalizada nas quatro fases de normalização, sendo que esta amarração é feita via código do assossiado??
Se sim este campo é de que tipo, numérico??

Estive pensando em uma forma de te ajudar e acho que pode dar certo.
ALVAROVB2009 31/07/2009 17:16:15
#318478
DANIKULL obrigado pelo retorno
Vamos as respostas
Há possibilidades de um assossiado esteja em mais de uma empresa???
Não

A amarração que você esta fazendo é tipo chave estrangeira, ou seja, a tabela esta normalizada nas quatro fases de normalização, sendo que esta amarração é feita via código do assossiado??
Sim, na tabela tbempresas tem o campo codempr que é chave e na tbassociados tem o campo codempr como chaveestrangeira e o codassociado como chave primária

Se sim este campo é de que tipo, numérico??
Sim


Detalhe, estou rodando esse relatório do datareport

Se tiver mais perguntas pode fazer
DANIKULL 31/07/2009 17:37:09
#318481
ALVAROVB2009,

Então se não me engano a solução é a seguinte.
Faça uma consula seleção pegando somente os registros onde o campo codempr seja diferente de null, ou zero. Desta forma você vai eliminar as empressas sem associados. Nesta mesam cosulta voce devera usar a expressão INNER JOINN que pegará na tabela de associados somente registros encontrados na tabela empressas.

Se você nao conseguir montar a consulta me avise, pq agora nao estou em casa, ok??
DANIKULL 31/07/2009 17:46:25
#318482
Um exemplo seria a seguinte:

SELECT campos FROM empresas C INNER JOIN associados V ON C.[campo_relacionado] = V.[campo_relacionado] WHERE [campo_relacionado] <> null;

Se não me engano a sequencia da consulta é esta, ok???
testa ai e depois vc reporta...
ALVAROVB2009 31/07/2009 18:05:11
#318485
DANIKULL obrigado pelo retorno, segunda feira irei testar sim e darei a resposta
Valeu
RCMRO 31/07/2009 19:02:22
#318494
Alvaro,

Desculpa ser chato mas eu criei aqui em casa no SQL Server um modelo igual ao seu e com o select que te enviei funcionou 100%. Tenta, pelo menos !!!!
Com relação ao REPORT, ajusta ele para que a coluna de quebra seja CODEMPR e fica tudo impresso como você quer.

Abraços


SELECT
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
ALVAROVB2009 03/08/2009 10:16:29
#318658
DANIKULL e RCMRO obrigado pelo retorno, eu vi hoje segunda as respostas de voces e as testei:

RCMRO infelizmente seu comando não funcionou pois continuou exibindo as empresas que no filtro deixaram de ter associados selecionados

DANIKULL também infelizmente não deu certo, o último comando testado foi esse:
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# and a.matricula is not null group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado order by a.Matricula ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2

Quanto ao Inner Join que você comentou é substituida pelo RELATE que é onde acontece a relação entre as tabelas no datareport
Página 3 de 4 [35 registro(s)]
Tópico encerrado , respostas não são mais permitidas