Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 498061
            [titulo] => Ajuda ao filtrar registros
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-10-16 14:23:46
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 391350
            [status] => A
            [isExample] => 
            [NomeUsuario] => Emerson de Souza Brito
            [Apelido] => EmersonBrito
            [Foto] => 
            [Conteudo] => ...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)
) ) )

Ajuda ao filtrar registros

Jorge Luiz
   - 14 out 2014

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á

Post mais votado

Emersonbrito
   - 16 out 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)
)

Emersonbrito
   - 16 out 2014

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!

Jorge Luiz
   - 16 out 2014

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

Emersonbrito
   - 16 out 2014

....hummm!

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

Jorge Luiz
   - 16 out 2014

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

Emersonbrito
   - 16 out 2014

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

Jorge Luiz
   - 17 out 2014

Bom dia Emerson!

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

Abração