Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DannyND

Intervalo de pesquisa (valores R$)

Recommended Posts

Fala galera,

 

Tenho que montar uma query com faixa de preços, mas não estou conseguindo montar a query.

 

Faixas de Preços

 

Faixa de Preço

  • R$49,50 a R$379,40 (53)
  • R$379,41 a R$709,30 (23)
  • R$709,31 a R$1.039,20 (6)
  • R$1.039,21 a R$1.369,10 (3)
  • acima de R$1.369,11 (6)

 

Preciso montar a query com mais de uma faixa de preço, exemplo:

 

and vl_venda between '49.5' and '379.4'

and vl_venda between '709.31' and '1039.2'

and vl_venda between '1039.21' and '1369.1'

 

COMO MONTAR A QUERY PARA MOSTRAR ESSAS 3 FAIXAS DE PREÇOS?

$query = "select * from ti_produtos where { ? }  ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

O between serve para comparar datas. Não conheço uma função especifica para comparar estes valores que você precisa, acho que desta forma conseguirá:

$query = "SELECT * FROM `ti_produtos` WHERE `vl_venda` > '49.5' AND `vl_venda` < '379.4'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que nem sempre serão intervalos inteiros, pode ser de 49.5 até 379.4 e depois entre 1000 até 2000, entendeu? Então não posso usar > e <

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT * FROM ti_produtos where vl_venda >= '379.41' and vl_venda <= '709.3' and vl_venda >='1000' and  vl_venda <='2000'

Não retorna nada e existem produtos com esses valores.

Se eu colocar apenas uma condição ele retorna os dados corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

case

select sum(case when preco between 49.50 and 79.40 then 1 else 0 end) as faixa1,
          sum(case when preco between 379.41 and 709.30 then 1 else 0 end) as faixa2 ...

é isto ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

case

select sum(case when preco between 49.50 and 79.40 then 1 else 0 end) as faixa1,
          sum(case when preco between 379.41 and 709.30 then 1 else 0 end) as faixa2 ...

é isto ?

 

Isso seria para somar os valores certo? Mas não quero somar "/. .preciso listar os produtos que estão entre essas faixas de preços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que se quer ?

 

Listar quantidades produtos entre faixas ?

 

Listar produtos entre determinada faixa de preço ?

 

Achar que produtos existem entre uma faixa de preço ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que se quer ?

 

Listar quantidades produtos entre faixas ?

 

Listar produtos entre determinada faixa de preço ?

 

Achar que produtos existem entre uma faixa de preço ?

 

Preciso listar todos os produtos que esteja na faixa de preços, porém podem existir mais de uma faixa em cada pesquisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Listar e classificar conforme o preço ?

 

Como seria saída dos dados ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Listar e classificar conforme o preço ?

 

Como seria saída dos dados ?

 

É um filtro de ecommerce, tipo submarino.. .e sim tem opção de ordenar por preço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu não entendi qual sua dúvida/problema, mas

 

 

Para achar preços num intervalo use between

preco between 123.45 and 234.56

para classificar use CASE

select sum(case when preco between 49.50 and 79.40 then 1 else 0 end) as faixa1,
       sum(case when preco between 379.41 and 709.30 then 1 else 0 end) as faixa2 ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

se entendi bem, tente OR.
exemplo: tenho uma tabela de lvros com preços entre 70 e 100 reais (campo decimal).
quero recuperar os livros cujos preços estejam entre 70.00 e 79.99 e entre 90 e 100 reais

(excluindo, portanto, os de preço entre 80 e 80.99 reais).
consulta:

select id, titulo from livros where preco between 70.00 and 79.99
OR preco between 90.00 and 100.00

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.