Foros del Web » Programando para Internet » PHP »

Duda con consulta a la base de datos (My SQL)

Estas en el tema de Duda con consulta a la base de datos (My SQL) en el foro de PHP en Foros del Web. Hola, al realizar una consulta a la base de datos (SELECT * FROM usuarios ORDER BY cantidad DESC LIMIT 0,30), me arroja como resultado lo ...
  #1 (permalink)  
Antiguo 21/12/2007, 15:08
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 3 meses
Puntos: 36
Duda con consulta a la base de datos (My SQL)

Hola, al realizar una consulta a la base de datos (SELECT * FROM usuarios ORDER BY cantidad DESC LIMIT 0,30), me arroja como resultado lo que ustedes ven en la imagen.
El problema es que al usuario que tiene en cantidad "20" figura ultimo, cuando debería estar primero. Esto solamente pasa cuando pongo numeros de dos cifras. Utilizando una sola cifra funciona bien. Como puedo hacer para que lo ordene correctamente.??

Imagen:
  #2 (permalink)  
Antiguo 21/12/2007, 15:59
Avatar de cdesseno  
Fecha de Ingreso: mayo-2007
Ubicación: Buenos Aires
Mensajes: 111
Antigüedad: 16 años, 11 meses
Puntos: 1
Re: Duda con consulta a la base de datos (My SQL)

De qué tipo es el campo cantidad?
  #3 (permalink)  
Antiguo 21/12/2007, 16:20
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 3 meses
Puntos: 36
Re: Duda con consulta a la base de datos (My SQL)

Hola cdesseno, es tipo VARCHAR:

  #4 (permalink)  
Antiguo 21/12/2007, 16:34
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: Duda con consulta a la base de datos (My SQL)

El resultado que te devuelve MySQL es ese, ya que la comparación de cadenas se hace de izquierda a derecha, y solo cuando 2 cadenas tiene el mismo caracter a la izquierda, pasa a comparar la segunda.

Dos soluciones posibles.

1) Guardar los números en el campo cantidad, como una cantidad constante de dígitos. Es decir, en ves de guardar:
0 1 2 3 20 30

Guadar: 00 01 02 03 20 30

Obviamente que esta solución desperdiciará mucho espacio, y puede llegar a fallar el orden cuando quieras guardar un número más grande que la cantidad de dígitos que usás.

2) Cambiar el tipo de dato de la columna a integer, lo cual es la solución más recomendable.
  #5 (permalink)  
Antiguo 21/12/2007, 16:54
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 3 meses
Puntos: 36
Re: Duda con consulta a la base de datos (My SQL)

Hola TolaWare, gracias por tu ayuda. Opte por tu segunda opción, la cual funciona correctamente.
Gracias tambien a cdesseno.
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 03:02.