Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 15-feb-2004, 11:37   #1 (permalink)
soud está en el buen camino
 
Fecha de Ingreso: agosto-2003
Mensajes: 38
order by sql

tengo una duda con el order by, cuando quieres ordenar numeros, sql no los odenena bien, por ejemplo cuando escribo esto:

select * from tabla order by id ASC

y los id van del 1 al 20
aparece ordenado pero parece que no distingue entre el numero de cifras que tiene un numero, aparece antes el 10 al 19 que el 2, como puede hacer para que aparescan bien ordenados, del 1 al 20.
soud está desconectado   Responder Citando
Antiguo 15-feb-2004, 12:11   #2 (permalink)
peleo está en el buen camino
 
Avatar de peleo
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 37
Pues cuando he leido tu pregunta me ha parecido algo raro, porque a mi eso no me ha pasado. Yo uso MySql. He ido al phpAdmin y he hecho una prueba y me ordena los ids perfectamente. No sé si es porque usas otra base de datos...
peleo está desconectado   Responder Citando
Antiguo 15-feb-2004, 12:53   #3 (permalink)
soud está en el buen camino
 
Fecha de Ingreso: agosto-2003
Mensajes: 38
esos eran numerod de ejemplo, intenta con
1234567, 23456 y 790, a mi me aparecerian en ese orden, aunque le pusiera ASC
soud está desconectado   Responder Citando
Antiguo 15-feb-2004, 16:38   #4 (permalink)
Giorgio está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Mensajes: 53
Hmm...

Ya checaste el formato del campo de ID ..? longitud de caracteres, único, autonumerico, sin signo, etc...?


Que formato de BD de datos usas (mySQL?)



Saludos

Jorge Garza
__________________
EmpresasEnRed.com
Diseño Web
Giorgio está desconectado   Responder Citando
Antiguo 16-feb-2004, 03:47   #5 (permalink)
Teri está en el buen camino
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 705
Eso suena a que le campo id es un texto, y claro.... para un texto 12 es mayor que 2, tienes algunas opciones, convertir ese campo en numérico, hacer que la select ordene ese campo como si fuera numérico.

select * from tabla order by convert(int, id) ASC

o actualizar la información de la tabla y rellenar con ceros por la izquierda, hasta una longitud determinada, así 012, sería mayor que 002

Estas opciones tienen su peligro, si es una tabla que ya tiene información y aplicaciones trabajando con ella, puede que alguno deje de funcionar, si conviertes esos datos a numéricos, además, si existiera algún texto, no lo convertiría, y perderías información.

Si haces la select convirtiendo en numérico, te dará un error si encuentra un texto y no lo puede convertir, y si pones los ceros delante, el problema de datos que pierdan relación lo tendrías igual que en el priimer caso

Un saludo y suerte
Teri está desconectado   Responder Citando
Antiguo 16-feb-2004, 16:43   #6 (permalink)
soud está en el buen camino
 
Fecha de Ingreso: agosto-2003
Mensajes: 38
gracias por la ayuda
soud está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 09:15.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93