Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde galera,
tenho um seguinte problema, tenho um select que esta sendo feito da seguinte forma:
Select Numero From tabela Where Numero Between (VarNumero - 50) and (VarNumero + 50); limit 10;
bom ate ai tube bem, portanto, preciso que retorno os 10 numero mais proximos de VarNumero e nao como retornado no select acima.
Ex:
VarNumero = 100
No select acima, se tiver 10 numero entre 50 e 100, me retornara os mesmo pois o limit 10 tiraria os demais.
Teria como eu fazer uma consulta para retornar os dados como desejados?
Desde ja agradeco.
Boa tarde Motta, obrigado pela atenção.
Fiz o teste com o dados informado, portanto não obtive o resultado esperado, pesquisei no docs e percebi que o abs retorna o valor absoluto. Reli meu post e percebi que não fui claro e ficou um pouco confuso.
Imagine, tenho os dados na base:
Numero - Cep
01 xxxx-xxxx
04 xxxx-xxxx
08 xxxx-xxxx
10 xxxx-xxxx
11 xxxx-xxxx
15 xxxx-xxxx
16 xxxx-xxxx
19 xxxx-xxxx
20 xxxx-xxxx
21 xxxx-xxxx
22 xxxx-xxxx
30 xxxx-xxxx
Desta forma, o usuário pesquisa por cep e número, imagine que ele consulte o numero 10, como existe, mostro pra ele os dados restante da tabela, ate ai tudo bem. Portando, caso este número não exista na base, mas existe números próximos a 10 eu gostaria de exibir ao menos 10 registros.
Imagine que ele busca por 7, como não existe, gostaria que retornasse os números (1,4,8,10,11,15,16,19,20,21,22), ou seja, os 10 mais próximos a ele.
Espero que entenda.
Obrigado.
Foi o que pensei , qual o erro na minha sql que vc notou ?
Motta, obrigado, deu certo, inclui o abs na minha clausula, portando havia esquecido de tirar o asc do order.
Agora esta funcionando perfeitamente, muito obrigado mesmo. Vivendo e aprendendo.
Select *
From tabela
Order by abs(numero - varnumero)
Limit 10