Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

order by sql

Estas en el tema de order by sql en el foro de Bases de Datos General en Foros del Web. tengo una duda con el order by, cuando quieres ordenar numeros, sql no los odenena bien, por ejemplo cuando escribo esto: select * from tabla ...
  #1 (permalink)  
Antiguo 15/02/2004, 12:37
 
Fecha de Ingreso: agosto-2003
Mensajes: 39
Antigüedad: 20 años, 8 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 15/02/2004, 13:11
Avatar de peleo  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 37
Antigüedad: 20 años, 5 meses
Puntos: 0
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...
  #3 (permalink)  
Antiguo 15/02/2004, 13:53
 
Fecha de Ingreso: agosto-2003
Mensajes: 39
Antigüedad: 20 años, 8 meses
Puntos: 0
esos eran numerod de ejemplo, intenta con
1234567, 23456 y 790, a mi me aparecerian en ese orden, aunque le pusiera ASC
  #4 (permalink)  
Antiguo 15/02/2004, 17:38
 
Fecha de Ingreso: diciembre-2003
Mensajes: 53
Antigüedad: 20 años, 4 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 16/02/2004, 04:47
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
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
  #6 (permalink)  
Antiguo 16/02/2004, 17:43
 
Fecha de Ingreso: agosto-2003
Mensajes: 39
Antigüedad: 20 años, 8 meses
Puntos: 0
gracias por la ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:44.