Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) USAR WHERE, AND E OR NA MESMA CONSULTA


Waister Marques

Pergunta

Boa tarde pessoal, fiz uma consulta que é a seguinte:

select * from venda v

where V.MAPA IS NULL

and v.cancelado is null

and (v.cidade not in ('53','54','28','8','18','22','27','110','101','111')

or v.venda in

(

select v1.venda

from venda v1

where v1.cidade in ('1','2','21','41') and

V1.DATDOC >= (SELECT CURRENT_DATE FROM RDB$DATABASE)))

Vou explicar a hierarquia do que preciso de retorno da consulta abaixo:

(primeira parte: quero todas as vendas que não estão em mapa nenhum e não estejam canceladas)

select * from venda v where V.MAPA IS NULL and v.cancelado is null

(segunda parte: trazer as vendas das cidades que não sejam das cidades que coloquei no not in )

and (v. not in ('53','54','28','8','18','22','27','110','101','111')

(terceira parte: dessas vendas que retornaram quero retirar as da cidade ('1','2','21','41') que são de outros dias que não o dia de hoje, tipo o que vende na cidade ('1','2','21','41') ontem já não me enteressa)

or v.venda in (select v1.venda from venda v1 where v1.cidade in ('1','2','21','41') and V1.DATDOC >= (SELECT CURRENT_DATE FROM RDB$DATABASE)))

Mas de qualquer forma que eu faça, colocando ou retirando os parenteses o retorno é sempre o mesmo, sempre vem as vendas das cidades que preciso retirar da consulta usando o OR, sendo que pelo meu entender o que coloquei após o OR deveria não vir na consulta, alguma ideia?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

(primeira parte: quero todas as vendas que não estão em mapa nenhum e não estejam canceladas)

select * from venda v where V.MAPA IS NOT NULL and v.cancelado is not null
(segunda parte: trazer as vendas das cidades que não sejam das cidades que coloquei no not in ) // correto
and (v. not in ('53','54','28','8','18','22','27','110','101','111')
terceira parte: dessas vendas que retornaram quero retirar as da cidade ('1','2','21','41') que são de outros dias que não o dia de hoje, tipo o que vende na cidade ('1','2','21','41') ontem já não me enteressa)
or v.venda in (select v1.venda from venda v1 where v1.cidade in ('1','2','21','41') and V1.DATDOC >= (SELECT CURRENT_DATE FROM RDB$DATABASE)))

sendo que pelo meu entender o que coloquei após o OR deveria não vir na consulta, alguma ideia?

o comando OR fica implicito se por qualquer motivo a select anterior não for satisfeita o código seguinte sera executado

no caso de colocar um AND, significa que alem da select anterior ser executada voce tambem quer que a proxima tambem seja executada

OBS: sugiro voce a testar a select por partes ( vá testando e agregando as outras sentenças para ver o resultado )

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...