Ir para conteúdo

Arquivado

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

Hugo Borges_120734

select em ordem

Recommended Posts

Galera montei o seguinte selec no meu mysql

select * from produtos where id = '$produto' or cod_barras = '$produto' or cod_barras_2 = '$produto'
O problema e que ele não pesquisa na ordem que eu coloquei, sou seja 1º id, depois cod_barras e etc..

 

Supondo que tenho um produto com id 30 e outro com o cod_barras 30.

 

O select deveria me mostrar 1º o produto com ide 30 depois o outro com o cod_barras 30.

 

Alguem sabe o que eu estou fazendo errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites
select * 
from produtos 
where id = '$produto' or cod_barras = '$produto' or cod_barras_2 = '$produto'
order by (case when id = '$produto'  then 1 
                      when cod_barras = '$produto' then 2
                      when cod_barras_2 = '$produto' then 3 else 4 end)

order by com CASE, talvez

Compartilhar este post


Link para o post
Compartilhar em outros sites

A cláusula WHERE não define a ordem dos resultado. A opção demonstrada pelo Motta é válida.

Você ainda tem a opção de trabalhar com a cláusula UNION:

select * from produtos where id = '$produto' 
union
select * from produtos where cod_barras = '$produto' 
union
select * from produtos where cod_barras_2 = '$produto'

Nesse caso, você poderia ter problemas de duplicidade caso a variável "sirva" em mais de 1 dos campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom irei usar desta forma:

select * from produtos where id = '$produto' 
union
select * from produtos where cod_barras = '$produto' 
union
select * from produtos where cod_barras_2 = '$produto'
LIMIT 0 , 1

Assim e mais simples , e retorna o 1º resultado achado, vlw galera pela ajuda.

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.