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

Orden alfabético con letras y números

Estas en el tema de Orden alfabético con letras y números en el foro de Mysql en Foros del Web. Hola amigos del foro: A ver si alguien puede ayudarme en esto: Mi problema es que tengo una tabla y un campo de tipo Varchar ...
  #1 (permalink)  
Antiguo 02/02/2011, 16:51
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Orden alfabético con letras y números

Hola amigos del foro:
A ver si alguien puede ayudarme en esto:
Mi problema es que tengo una tabla y un campo de tipo Varchar en el que escribo la ruta a unas imágenes para que se muestren desde la base de datos.
Los campos son así:

imagenes_web/foto1_0.jpg
imagenes_web/foto1_1.jpg
imagenes_web/foto1_3.jpg
imagenes_web/foto1_6.jpg
imagenes_web/foto1_10.jpg

Pero cuando las muestro, lo hace en este orden:
imagenes_web/foto1_1.jpg
imagenes_web/foto1_10.jpg
imagenes_web/foto1_6.jpg
imagenes_web/foto1_0.jpg
Y claro, muestra las fotos desordenadas. ¿Alguien sabe por qué sucede esto? Para mí este orden no tiene ninguna lógica ¿El problema es el guión bajo? ¿Es por mezclar números con letras?
Gracias de antemano
  #2 (permalink)  
Antiguo 02/02/2011, 17:07
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Orden alfabético con letras y números

hola, se me ocurre asi rapidito que puedes cambiar la estructura del nombre de tus imagenes por esto

imagenes_web/foto1_00.jpg
imagenes_web/foto1_01.jpg
imagenes_web/foto1_03.jpg
imagenes_web/foto1_06.jpg
imagenes_web/foto1_10.jpg

veras que asi te las ordena como quieres.
pero la pregunta es que tan complicado sera controlar que asi sea la estructura del nombre?

Saludos.
  #3 (permalink)  
Antiguo 02/02/2011, 17:14
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Orden alfabético con letras y números

¡Ah! pongo 0 delante... ¡Gracias por la solución!
Bueno, tengo que tomarme un tiempo en cambiar el nombre a todas las imágenes.
  #4 (permalink)  
Antiguo 02/02/2011, 17:18
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Orden alfabético con letras y números

de hecho que si te tocara, cambiar todas las imagenes, tanto al archivo en si como a la ruta.

para la ruta creo que se puede crear una consulta que te actualice eso pero, habria que pensarla un poco, ahi como uzando lpad, pero bueno, prueba y comentas.
  #5 (permalink)  
Antiguo 02/02/2011, 17:43
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Orden alfabético con letras y números

No queria quedarme con la duda, y pues esta seria la consulta que te ayudaria a formatear la ruta en tu base de datos.

pero tomando en cuenta ciertas cosas, como que la estructura del nombre siempre sea igual al final, es decir, "_xx.jpg"

pero bueno prueba y comentas.

Código MySQL:
Ver original
  1. SELECT concat(SUBSTRING_INDEX(ruta,'_',2),'_',lpad(mid(ruta,length(SUBSTRING_INDEX(ruta,'_',2))+2),6,"0")) Ruta from TuTabla;
  #6 (permalink)  
Antiguo 04/02/2011, 05:15
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Orden alfabético con letras y números

Hola Lenincasco, he probado cambiar los nombres de las imágenes como me dijiste y los he puesto más simples, sin el guión bajo enmedio. Pero ahora me las ordena de esta manera:
imagenes_web/foto09.jpg
imagenes_web/foto08.jpg
imagenes_web/foto07.jpg
imagenes_web/foto06.jpg
imagenes_web/foto05.jpg
imagenes_web/foto01.jpg
imagenes_web/foto02.jpg
imagenes_web/foto03.jpg
imagenes_web/foto04.jpg
imagenes_web/foto10.jpg
imagenes_web/foto11.jpg
imagenes_web/foto12.jpg
Da igual que ponga order by ruta desc o acs, me lo sigue listando igual

Y con tu último mensaje me surge otra duda:
En la consulta ¿es necesario poner en el Select todo eso concatenado? Si el campo es un Varchar ¿no toma toda la ruta como un string directamente?
Yo había probado poniendo únicamente "Select ruta from imagenes where categoria like 'animales'"
En otras ocasiones me ha funcionado bien, no sé ahora qué estoy haciendo mal. Se da la circunstancia que en phpmyadmin también aparece desordenado, y en los casos anteriores que me salieron bien aparecen todas las rutas bien ordenadas por nombre y por número.
Por cierto... ¿cómo se cita lo que dice otro usuario? No escribo mucho en los foros
  #7 (permalink)  
Antiguo 04/02/2011, 05:18
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Orden alfabético con letras y números

¡Ah, ah!! Perdona, no había leído bien, je, je
Querías decir para modificar en la base de datos, no para hacer la consulta...
  #8 (permalink)  
Antiguo 04/02/2011, 09:12
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Orden alfabético con letras y números

Acabo de solucionarlo: en el php myadmin aparecen desordenadas,no se por qué. Pero ahora sí que las ordena al mostrar los resultados con Order by ruta ASC.
  #9 (permalink)  
Antiguo 04/02/2011, 10:38
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Orden alfabético con letras y números

Cita:
Iniciado por rocio01 Ver Mensaje
¡Ah, ah!! Perdona, no había leído bien, je, je
Querías decir para modificar en la base de datos, no para hacer la consulta...
Si era, para agilizar un poco el cambio de los nombres, y esa consulta la adaptas a un update y creo que funcionaria.

Y pues que bueno que ya este solucionado.

Suerte...

Etiquetas: letras, orden
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 22:43.