• 0
Sign in to follow this  
Waister Marques

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

Question

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?

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this