Guariento 1 Denunciar post Postado Março 2, 2012 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
Prog 183 Denunciar post Postado Março 2, 2012 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
Motta 645 Denunciar post Postado Março 2, 2012 http://forum.imasters.com.br/topic/457935-busca-de-nomes-completos-semelhantes/ Compartilhar este post Link para o post Compartilhar em outros sites