Ir para conteúdo

POWERED BY:

Arquivado

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

Guariento

Ordernar por "critério de pesquisa"

Recommended Posts

Prezados,

 

Quero saber se é possível efetuar uma consulta e ordenar os resultados pelo critério da pesquisa? Vou tentar explicar com um exemplo:

 

Vamos supor que eu tenha uma tabela com os seguintes registros:

 

id | nome

1 | Celular Samsung

2 | Celular Nokia

3 | Celular Motorola

 

Então resolvo executar a seguinte consulta:

 

SELECT nome FROM tabela WHERE nome LIKE '%celular samsung%' OR nome LIKE '%celular%' OR nome LIKE '%samsung%' ORDER BY nome;

 

Como resultado da consulta acima, teremos:

 

1ª posição: Celular Motorola

2ª posição: Celular Nokia

3ª posição: Celular Samsung

 

A ordem do resultado da pesquisa eu considero incorreto, pois a frase pesquisada é "celular samsung" e este deveria aparecer logo no início da consulta, mas não foi o que aconteceu.

 

Então fiz um ajuste na consulta:

 

SELECT nome FROM tabela WHERE nome LIKE '%celular samsung%' OR nome LIKE '%celular%' OR nome LIKE '%samsung%' ORDER BY nome LIKE '%celular samsung%' DESC, nome;

 

Como resultado do ajuste no ORDER BY, teremos:

 

1ª posição: Celular Samsung

2ª posição: Celular Motorola

3ª posição: Celular Nokia

 

Resolvido? Não exatamente pois, essa solução que fiz (até que me provem o contrário) eu considero uma gambiarra. Existe uma maneira correta de se resolver este problema? Ou esta é a maneira correta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim... Para cada contexto, haverá uma consulta (sem order), tal como:

 

SELECT nome FROM tabela WHERE nome LIKE '%celular samsung%' 
union
SELECT nome FROM tabela WHERE nome LIKE '%celular%' 
union
SELECT nome FROM tabela WHERE nome LIKE '%samsung%'

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.