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

Problema para ordenar campo m2

Estas en el tema de Problema para ordenar campo m2 en el foro de Bases de Datos General en Foros del Web. Buenas, tengo un problema que no se pq ocurre. tengo unos registros en una bd. uno de ellos es superficie (m2). el problema es que ...
  #1 (permalink)  
Antiguo 11/03/2005, 02:38
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Problema para ordenar campo m2

Buenas, tengo un problema que no se pq ocurre. tengo unos registros en una bd. uno de ellos es superficie (m2). el problema es que no me los ordena correctamente.

ORDER BY m2 DESC, ASC

por ejemplo el ASC me da el siguiente resultado:

100,100,20,225,30,50,55...

pq pasa esto? los otros campos me los ordena perfectamente.

salu2 y gracias!!
  #2 (permalink)  
Antiguo 11/03/2005, 02:47
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 19 años, 5 meses
Puntos: 0
Aupa.

Fijate que el campo sea tipo númerico y no carácter, porque parece que te los esta ordenando por orden alfabético.
  #3 (permalink)  
Antiguo 11/03/2005, 05:26
Avatar de yeti  
Fecha de Ingreso: octubre-2004
Ubicación: España, Madrid
Mensajes: 152
Antigüedad: 19 años, 8 meses
Puntos: 0
flopi tiene razon, tiene toda la pinta de que esa columna sea de tipo varchar2
__________________
Cuando creas que no hay solución posible, busca en los foros, siempre en mejor tener a la red mundial de tu parte
  #4 (permalink)  
Antiguo 11/03/2005, 05:32
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 10 meses
Puntos: 2
Coincido con Flopi. Está haciendo una ordenación de tipo caracter no numérico.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #5 (permalink)  
Antiguo 11/03/2005, 09:37
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
muchisimas gracias a los 3!! la verdad es que es una cosa que no habia caido nunca, estoy acostumbrado a declarar todo como char. cuando se declaran estos campos, m2, precio, hab, etc, datos de tipo numero, como es mejor declararlos? INT?

salu2
  #6 (permalink)  
Antiguo 11/03/2005, 09:52
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 19 años, 5 meses
Puntos: 0
Depende del dato en concreto, porque no todos ocupan el mismo espacio en la bd ni se tratan igual. Yo suelo usar int siempre que me es posible por comodidad, y para decimales uso decimal en vez de float porque float a veces (pocas veces, pero pasa) da problemas al realizar operaciones matématicas.
Aunque si te ves con problemas de espacio para tu base de datos te recomiendo que apures un poco y uses el tipo de dato mas correcto para cada campo, como tinyint para el número de habitaciones de una casa y cosas asi.
  #7 (permalink)  
Antiguo 11/03/2005, 09:53
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
gracias flopi, y como se el tipo de dato que va mas acorde en cada momento??

salu2 y gracias
  #8 (permalink)  
Antiguo 11/03/2005, 10:12
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 19 años, 5 meses
Puntos: 0
Pues comparas el valor mas alto que vayas a usar con el valor mas alto del campo, y si esta dentro de su rango, ese esel tipo. Por ejemplo:
Campo "habitaciones". Como mucho una casa va a tener 40 habitaciones (mas que una casa es un castillo)
TinyInt tiene un rango de -128 a 127.
SmallInt de -32768 a 32767.
Int de -2147483648 a 2147483647.
Lo ideal seria entonces que el campo "habitaciones" fuera tinyint, para cargar menos la base de datos. En la práctica, a menos que vayas a usar bases de datos gigantescas, y en maquinas cutres, te recomendaria que no te molestaras en hacer estos calculos, y simplemente declararas como int los numeros enteros y como decimal todos los demas.
  #9 (permalink)  
Antiguo 14/03/2005, 06:43
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 10 meses
Puntos: 2
Y no te olvides que puedes definir los campos como unsigned y por lo tanto los rangos se duplican. En este caso:
Tinyint pasa a un rango de 0 a 256.
Smallint de 0 a 65535
...
Un saludo.
__________________
Estoy contagiado de Generación-I
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 09:56.