PHP - ordenacion sql

   
Vista:
Imágen de perfil de lluis

ordenacion sql

Publicado por lluis (68 intervenciones) el 18/08/2008 16:36:50
TENGO UNA TABLA MYSQL "DATOS" CON LOS CAMPOS "CODIGO" Y "NOMBRE", LOS 2 SON TIPO TEXTO
SI HAGO LA CONSULTA "SELECT * FROM DATOS ORDER BY CODIGO ASC" ME SALE LO SIGUIENTE:
1 MANZANAS
10 PERAS
2 FRESAS

COMO SE TIENE QUE PONER EN LA CONSULTA SQL PARA QUE ME CONVIERTA EL CODIGO A NUMERICO, PARA QUE SALGA BIEN ORDENADO:

1 MANZANAS
2 FRESAS
10 PERAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ordenacion sql

Publicado por Luis Jordán (60 intervenciones) el 18/08/2008 17:17:56
De la forma que te lo devuelve es correcto. Para obtener lo que tu quieres has de insertar un cero delante de:

01 MANZANAS
02 FRESAS
10 PERAS

Así te lo devolverá de la forma que tu quieres.
Un salutón!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de lluis

RE:ordenacion sql

Publicado por lluis (68 intervenciones) el 18/08/2008 17:55:59
ya lo tengo con 0 delante, pero como los usuarios pueden añadir registros, por eso quiero ordenar por el valor numerico, porque me encuentro:
08
09
10
100
11
12
13
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ordenacion sql

Publicado por Luis Jordán (60 intervenciones) el 18/08/2008 18:00:37
Mira Luis, tu problema se genera ya que no has creado un campo id en la base de datos con valor autonumérico, si hubieras hecho eso, solo tendrías que poner la consulta + ...
ORDER BY id DESC por ejemplo.
Acostumbrate a que cada tabla tenga su campo id autonumerico y clave principal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de lluis

RE:ordenacion sql

Publicado por lluis (68 intervenciones) el 18/08/2008 18:48:29
si que tengo campo id
pero el codigo no puede ser el mismo campo id porque viene dado por el cliente, y tampoco tiene porqué ser correlativo, se puede poner cualquier numero siempre que no esté ya creado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ordenacion sql

Publicado por Diego Romero (1450 intervenciones) el 18/08/2008 20:16:12
Prueba lo siguiente:

SELECT * FROM datos ORDER BY CONVERT(INT,codigo) ASC;

*Creo* que puede funcionar en tu caso. Yo no lo he probado puesto que no tengo una tabla a la mano a dónde hacer pruebas.

Pero aún así si tu campo "codigo" va a contener solo números, te recomiendo que ejecutes una alteración de tabla (ALTER) para convertir ese campo en numérico (INT(x)). Te vas a ahorrar más de un problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ordenacion sql

Publicado por Luis Jordán (60 intervenciones) el 19/08/2008 08:23:36
Hola Diego, ¿crees que puede transformar un campo a entero teniedo como registro... 100 lo que sea? piensa que también contiene cadena de texto y eso no se puede transformar a entero.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ordenacion sql

Publicado por Diego Romero (1450 intervenciones) el 19/08/2008 19:36:03
Nunca lo probé, pero teniendo en cuenta la forma en cómo se transforma un campo en MySQL funcionaría si en ese campo nunca encuenta un caracter que es inválido como entero. Pero insisto, hablo especulando y no con conocimiento de causa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar