Consigo fazer condicoes em query SQL?

5 respostas
P

Opa :smiley:

Lá vou eu com mais uma pergunta sobre SQL…hehe

Tenho a tabela TB_PROMOCAO e nela existem 3 status:

-Aguardo ( 0 )
-Ativo ( 1 )
-Inativo ( 2 ).

Cada vez que coloco um novo registro na tabela, ele entra com o status 0 e o status anterior ( que antes era 1 ) muda pra 2.

Eu preciso fazer um select para buscar um determinado produto dessa tabela TB_PROMOCAO e ele precisa ter o status 0 ou o status 1 mas o VL_VENDA (independente do status 0 ou 1…eu determino o status 0 se ele tiver alguma registro com status 0, se não tiver, eu busco pelo status 1) dele deve ter tido aumento ou reducao de preco com relação ao registro que está com status 2.

Eu consigo realizar essa busca fazendo a comparação diretamente na query?

Eu consegui montar uma parte, mas to travado nessa comparação:

select distinct * from TB_PROMOCAO
where TB_PROMOCAO.STATUS =
case when (select count(1) 
			from   	TB_PROMOCAO 
			where	STATUS  = 0 
  		) = 0 then 1 else 0 end

Alguém me dá uma força? :smiley:

Obrigado

5 Respostas

dudaskank

Deixa eu tentar ajudar…

Bom, provavelmente na sua tabela de promoções você tem também uma data, se não tem vai precisar, pois pode ter várias promoções para o mesmo produto.

Você então deve comparar o valor da última promoção com o da atual, se a diferença entre eles for diferente de 0, então coloca no resultado da consulta.

Ajudou?

ricktg

padcoe, que banco de dados voce esta usando?

Posta a estrutura da tabela ai que fica mais facil de vizualizar…

:slight_smile:

P

Estou utilizando Oracle 10g.

dudaskank, eu tenho uma data sim ( dt_inicio ) mas não sei como encaixar isso na query :frowning:

P

Então, meu problema é que aquela query q eu mandei, retorna N resultados. E se eu passar somente a data como parametro, vou continuar recebendo mais de um resultado pq posso ter N resultados no dia. Pra cada retorno da primeira query, eu deveria buscar o VL_VENDA daquele produto da TB_PROMOCAO e comparar. Se ele fosse diferente, entao eu imprimia, senao nao…mas nao sei se rola isso :frowning:

Abs

ricktg

Não sei se funciona…
Completa o where do select TP2 e ve o que da… :-o

select    * 
from	     TB_PROMOCAO TP1
where    (TP1.STATUS = 0 OR TP1.STATUS = 1)
and	     TP1.VL_VENDA <> (select TP2.VL_VENDA from TB_PROMOCAO TP2
			                  where <AQUI FAZ O JOIN ENTRE TP1 e TP2 (PK)>
			                  and TP2.STATUS = 2)
Criado 11 de fevereiro de 2009
Ultima resposta 12 de fev. de 2009
Respostas 5
Participantes 3