Foros del Web » Programando para Internet » PHP »

¿como ORDER BIEN = 0,1,2,10 MAL = 0,10,100,2,?

Estas en el tema de ¿como ORDER BIEN = 0,1,2,10 MAL = 0,10,100,2,? en el foro de PHP en Foros del Web. Hola, Antetodo deciros que he buscado en el foro y en el manual de MySQL, pero no logro aclararme... qué tipo parámetros debo añadir... Estoy ...
  #1 (permalink)  
Antiguo 23/01/2004, 08:17
 
Fecha de Ingreso: enero-2003
Mensajes: 7
Antigüedad: 21 años, 2 meses
Puntos: 0
¿como ORDER BIEN = 0,1,2,10 MAL = 0,10,100,2,?

Hola,

Antetodo deciros que he buscado en el foro y en el manual de MySQL, pero no logro aclararme... qué tipo parámetros debo añadir... Estoy seguro que es muy facil, pero uno tiene sus límites, jeje

$query = "SELECT * FROM cosas WHERE idcosa='$id' ORDER BY num_cos ASC";

Me gustaria que quedará así...
0,1,2,3,10,20,25,30

pero me queda asi
0,10,100,1000,2,20...


¿Se os ocurre algo?

Muchas gracias
  #2 (permalink)  
Antiguo 23/01/2004, 08:21
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola,
aparentemente esta OK.

cuales son los campos de esa tabla cosas?

Si lo que quieres es ordenar de menor a mayor, no hace falta que pongas ASc, por defecto ya se realiza ascendentemente.

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #3 (permalink)  
Antiguo 23/01/2004, 08:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y tu campo num_cos .. que tipo es? .. Un INT, VARCHAR .. o de que tipo es?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 23/01/2004, 08:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Pues ese orden es el correcto, si es que son cadenas de texto. Supongo que habras definido ese campo como un CHAR o un VARCHAR.

Una solucion seria cambiar ese campo a un tipo numerico (INT por ejemplo).

Y otra seria convertir para la consulta a un tipo numerico. Se puede hacer asi:
Código PHP:
ORDER BY num_cos+
No se si es standard o si hay otra forma mejor.

Y otra forma seria crear un alias del campo modificado con la funcion LPAD para añadir 0 a la izquierda:

SELECT *,LPAD(num_cos,10,'0') as nom_cos_2 FROM cosas WHERE idcosa='$id' ORDER BY num_cos_2 ASC

Asi num_cos_2 tendra 10 digitos (puedes poner los que te de la gana), y si num_cos tenia solo 5, añadira 5 ceros a la izquierda.

Pero ya te digo que no se si habra otra forma mas directa.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 23/01/2004, 12:00
 
Fecha de Ingreso: enero-2003
Mensajes: 7
Antigüedad: 21 años, 2 meses
Puntos: 0
Muchas gracias a todos por contestar...

En realidad el campo es de este tipo varchar(10)
porqué se pensó en su día que tal vez habría 1, 1a, 2a, 3...

Me gustaría si puede ser, repararlo de manera rápida, aunque sea para salir del paso y que me salga todo así 1,10,12,20 porque por ahora no tengo ninguno asi 1a,1... etc..

Lo raro es que depende de qué consulta le haga sale bien (1,10,20) o sale mal (1,100,100,2) En fin no se explicarme muy bien, porqué la sintaxis es la misma... No se si se me entiende
  #6 (permalink)  
Antiguo 23/01/2004, 12:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues modifica (altera) el tipo de dato de ese campo y lo pasas a INT o SMALLINT o cualquier numérico que se adapte a tus necesidades ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 14:03.