Ir para conteúdo

POWERED BY:

Arquivado

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

wrn

Como ordenar numericamente no MySQL

Recommended Posts

Estou tentando ordenar os dados vindos de uma coluna no MySQL (sou novato no assunto) mas não consigo colocar na ordem normal, tipo: 1, 2, 3, 4, 5... ele sempre coloca 1 depois 10, etc.. tudo que começa com 1, depois tudo que começa com 2, etc...O Código tá assim: include "config.php";//carrega os dados$sql = "SELECT * FROM satelite ORDER BY grau";$resultado = mysql_query($sql)or die ("Não foi possível realizar a consulta ao banco de dados");while ($linha=mysql_fetch_array($resultado)) {echo "<tr><td bgcolor='#F3F3F3' align='center'><font size=2> <b><a href='charts.php?ir=$linha[ini]'> $linha[grau] $linha[posicao]</b></a></font></td>";}A Coluna Grau possui números de até 5 digitos sendo assim: 27.1 Intelsat1.0 Intelsat115.5 Satmex35.5 Panamsat22.0 NSS42.0 StarOne2.0 Loral101.0 Telesatetc...O resultado que aparece na ordenação é este:1.0 Intelsat101.0 Telesat115.5 Satmex2.0 Loral22.0 NSS27.1 Intelsat35.5 Panamsat42.0 StarOneGostaria que fossem ordenados assim: 1.0 Intelsat2.0 Loral22.0 NSS27.1 Intelsat35.5 Panamsat42.0 StarOne101.0 Telesat115.5 SatmexObrigado desde já pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já havia testado tanto com ASC quanto com DESC

 

Com ASC fica assim:

1.0 Intelsat

101.0 Telesat

115.5 Satmex

2.0 Loral

22.0 NSS

27.1 Intelsat

35.5 Panamsat

42.0 StarOne

 

Com DESC fica assim:

42.0 StarOne

35.5 Panamsat

27.1 Intelsat

22.0 NSS

2.0 Loral

115.5 Satmex

101.0 Telesat

1.0 Intelsat

 

 

Em ambos NÃO consegui colocar na ordem normal que seria:

1.0 Intelsat

2.0 Loral

22.0 NSS

27.1 Intelsat

35.5 Panamsat

42.0 StarOne

101.0 Telesat

115.5 Satmex

 

 

Obrigado por tentar ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz... você pode tentar utilizando o Cast.

Ex:

SELECT * FROM satelite ORDER BY CAST(grau AS SIGNED) ASC

Mais info: Cast Functions

Isto porque está ordenando uma coluna não numérica (esta deve ser char ou varchar ou outro tipo), então a ordenação realmente fica estranha neste caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, eu acabei de conseguir mudando pra DECIMAL na tabela do DB... mas assim ele tora os numeros com vírgula...Acabei de testar este que você passou, cassitos... e funcionou muito melhor, funcionou certinho! Obrigado!Mas acontece outra coisa agora que passei deste passo... pra cada um daqueles ítens o sistema teria que buscar em outra tabela a postagem mais recente, mas não estou conseguindo fazer isso... alguem tem alguma dica?Obrigado desde Já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou tentando usa esta funcao CAST... porem nao estou conseguindo um resultado satisfatorio!!!SELECT * FROM faturamento_lojas ORDER BY CAST(faturamento AS DECIMAL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual tipo é o campo 'faturamento'? Dê exemplo de informações contidas nele, e como você queria o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, eu estava vendo tópico e estou precisando de uma ajudinha hehe. Eu fiz uma listagem com paginação, e to precisando que ele faça a listagem do ultimo cadastro para o primeiro. Eu fiz todos os exemplos e uns tirava a paginação, e outros dava erro. Mas nenhum dos exeplos retornou do ultimo para o primeiro cadastro, alguem pode me ajudar =].

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.