Ajuda ao filtrar registros

14/10/2014

0

Bom dia pessoal

Trabalho em uma empresa, onde o cliente pode inserir observações nos pedidos

Existe uma tabela de cadastro de observações, onde há números que a identificam (1,2,3,...), então por exemplo o tipo de observação ENVIO é 1 e o tipo de observação ENTREGA é 5 e assim sucessivamente

Eu preciso saber quais pedidos não possuem nem um nem outro

A consulta que estou usando é

select pedido
from
pedidos a,observações b
where
a.codobservacao=b.codobservacao
and
b.tipo <> 1
and
b.tipo <> 5

A tabela de observações tem a seguinte estrutura
CODOBSERVACAO TIPO

Quando eu faço um pedido é gerado um número de código de observação e esse número é colocado na tabela de pedidos(aonde faço a junção no select) e também na tabela de observações


Por exemplo eu faço um pedido com os tipos de observação 1,2 e 5, ele será gravado assim no banco(eu tenho vários tipos de observação , só estou dando exemplo dessas 3)

TABELA PEDIDOS
PEDIDO CODOBSERVACAO
1000 500(número aleatório gerado na gravação do pedido)


TABELA OBSERVAÇÕES
CODIGO TIPO
1 1(ENVIO) -esses com código 1 são os cadastros
1 2(TESTE)
1 5(ENTREGA)
500 1
500 2
500 5


O problema que estou tendo é o seguinte, na minha consulta o pedido 1000 aparece, pois a observação do tipo 2 está levando ele para o resultado da consulta

Deve ser algo simples mas como sou inexperiente nessa área não estou conseguindo diagnosticar o erro

Preciso listar todos os pedidos que não tenham nem um nem outro, por mais que tenha outros tipos de observações pelo fato de ele ter o tipo de observação 1 ou 5 ele será excluido do resultado

Quem puder me ajudar eu agradeço desde já
Jorge Luiz

Jorge Luiz

Responder

Post mais votado

16/10/2014

...Veja se isso atende:

select a.pedido, b.tipo
from pedidos a

inner join observações b
on a.codobservacao = b.codobservacao

where a.pedido NOT IN (
select distinct a.pedido
from pedidos a

inner join observações b
on a.codobservacao = b.codobservacao

where b.tipo in (1,5)
)

Emerson Brito

Emerson Brito
Responder

Mais Posts

16/10/2014

Emerson Brito

Boa Tarde!

Prezado, pelo que entendi vc. quer listar os pedidos que não tenham as observações 1,2 e 5 isso?

Se for isso, baseando no seu script ficaria assim:

select a.pedido, b.tipo
from pedidos a
inner join observações b
on a.codobservacao = b.codobservacao
where b.tipo not in (1,2,5)


Espero ter lhe ajudado!
Responder

16/10/2014

Jorge Luiz

Boa tarde Emerson!

Primeiramente agradeço sua ajuda

O que eu quero é pedidos que não tenham nem observação 1 nem a 5

Se eu fizer a consulta que você está me falando vai me aparecer pedidos que eu não quero, porque tem pedido que tem por exemplo a observação 1,2 e 5, e no NOT IN estou falando que não quero pedidos que tenham 1 e 5, mas ele entra no resultado pois a observação 2 leva ele

No meu banco fica gravado assim(vamos imaginar o pedido número 100 que tem 3 observações cadastradas nele)

Tabela Pedidos

PEDIDO CODOBSERVACAO
100 12345

Tabela Observações

CODOBSERVAÇÃO TIPO(é o que quero filtrar)
12345 1
12345 2
12345 5


Na consulta que você me passou eu digo que não quero nem o 1 e nem o 5, mas ele tem a observação 2 que faz ele entrar no resultado

Eu preciso fazer uma consulta que elimine o pedido do meu resultado se ele tiver a observação 1 ou 5, independente de outras observações que ele tenha
Responder

16/10/2014

Emerson Brito

....hummm!

Então só vc. tirar o 2 do NOT IN. Não resolve? Retornaria todos outros números exeto 1 e 5.
Responder

16/10/2014

Jorge Luiz

Não resolve Emerson pois eu coloco na consulta NOT IN(1,5), então eu não quero pedidos que tenham observação do tipo 1 e 5, mas como no pedido tem a 2 ele entra no meu resultado, no select eu peço para retornar somente o número do pedido

Na tabela de observações existem 3 linhas referente aquele código de observação(campo que eu uso para fazer o join entre as tabelas), uma com cada observação(1,2,5), ele descarta o 1 e 5 mas leva o pedido para o resultado pois tem um codigo de observação com a observação 2 vinculada

Eu precisaria que que ele descartasse o pedido caso ele tenha o tipo de observação 1 e 5, independente de outros tipos que estejam vinculados, só pelo fato de ter o 1 ou 5 ele some do meu resultado

É um pouco tenso kkk
Responder

16/10/2014

Emerson Brito

...Vc. quer que se existir pedido com tipo 1 e 5, ele não traga nada? Despreze 2,3, etc..etc.. ?
Responder

17/10/2014

Jorge Luiz

Bom dia Emerson!

Muito obrigado mesmo! deu certo sim, era isso que precisava!



Abração
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar