AJUDA SQL

AZORSCA 06/03/2013 15:38:27
#420034
Boa tarde.
Estou com a seguinte dificuldade nesta Query.

Tenho duas tabelas uma de alunos e outra de pacotes

SELECT * FROM ger015 INNER JOIN ger061 ON ger015.codigo = ger061.codigo WHERE (ger015.status=[Ô]Ativo[Ô] and ger061.Pactri10= true or ger061.PacAn30=true and ger061.pacsem15=true ) order by ger015.codigo

tenho no total 31 alunos cadastrados com pacotes que estão com o status Ativo.

Só que nesta query está me trazendo apenas 26

Na condição Where se eu mudar os itens AND ou Or os resultados mudam e dependendo trazem os com status Suspensos também.

Poderia me ajudar dando uma luz sobre esta query.


Obrigado
KERPLUNK 06/03/2013 15:58:50
#420037
Certo, qual a estrutura de ambas as tabelas?
AZORSCA 06/03/2013 16:15:08
#420038
Tabela Alunos Ger015 Tabela PacotesGer061
Codigo PacTri10
Nome PacSem15
Endereço PacAn30
Status
email
profissão

A estrutura está assim
Não posso modificá-la pois não tenho permissão da empresa.

Mesmo as tabelas não estando normalizadas.
KERPLUNK 06/03/2013 16:19:49
#420039
Certo, e qual a ligação, entre elas, qual campo se relaciona com qual, PacTrixxx são o que?
AZORSCA 06/03/2013 16:32:37
#420040
Então vou tentar explicar com palavras, pois como disse não há normalização alguma e não tem ligações de chaves primárias ou estrangeiras.

é o seguinte tenho uma academia de musculação e nela tenho os alunos

Ofereço aos alunos pacotes diferenciados com descontos.

Pacote trimestral dou 10% de desconto nas mensalidades
Pacote Semestral ofereço 15%
e por fim o Anual onde eu ofereço 30 % de desconto ao aluno

Os pacotes eu armazeno na tabela Ger061
E os Alunos na Ger015

Esta query que estou tentando modificar é que eu desejo que na consulta para um relatorio venha todos os alunos que tenham pacotes e que estejam com o status de Ativo.

Ajudou?

Obrigado
LLAIA 06/03/2013 17:08:05
#420046
Resposta escolhida
Caraca meu ... que doideira!!! Então o campo Codigo em ger015 é uma referência à tabela dos pacotes? Se sim, tente isto:

 WHERE (ger015.status=[Ô]Ativo[Ô] and (ger061.Pactri10= true or ger061.PacAn30=true or ger061.pacsem15=true) )  order by ger015.codigo
AZORSCA 06/03/2013 17:13:01
#420047
LLAIA então não é referencia não é o codigo do aluno mesmo.


tentei desta maneira e acabou dando erros aqui.
AZORSCA 06/03/2013 17:15:01
#420049
LLAIA. desconsidere o comentário anterior deu certo do jeito que você passou.,

Obrigado mesmo.

Grande abraço
Tópico encerrado , respostas não são mais permitidas