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

orden de números ascendente

Estas en el tema de orden de números ascendente en el foro de Mysql en Foros del Web. Hola, quiero ordenar imágenes por orden númerico, por ejemplo que la imagen que tiene número 11 aparesca luego de la 10. Hice la consulta con ...
  #1 (permalink)  
Antiguo 09/02/2012, 06:39
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
orden de números ascendente

Hola, quiero ordenar imágenes por orden númerico, por ejemplo que la imagen que tiene número 11 aparesca luego de la 10.

Hice la consulta con ORDER BY posicion ASC pero no me lo ordena bien ya que el 11 me lo coloca despues del 1.

Saludos! y gracias!
  #2 (permalink)  
Antiguo 09/02/2012, 07:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: orden de números ascendente

Porque tienes ese campo mal definido.
Los números pueden ser TYNYINT, SMALLINT, MEDIUMINT, INT, BIGINT, DECIMAL, REAL, FLOAT o DOUBLE. Pero jamás, nunca deben ser VARCHAR.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/02/2012, 07:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: orden de números ascendente

Buenísimo!
  #4 (permalink)  
Antiguo 12/09/2012, 13:36
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: orden de números ascendente

Buenas tardes.
Se me ha presentado ese mismo problema hace unas horas y he posteado un nuevo tema, no se si he hecho bien moderador.
Lo que pasa es que intento hacer una consulta por ORDER BY numero ASC que seria por el numero de la direccion que hay en cada registro y me muestra el resultado por orden de la id ya que tengo ese campo en varchar con 280 de longitud.
Te he leido pero aun cambiando el tipo de datos se me refleja el mismo error.
Espero que me entiendas.
Saludos
  #5 (permalink)  
Antiguo 12/09/2012, 13:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: orden de números ascendente

Si el tipo de columna es numérico, no debería presentarse un error de ordenamiento, pero sin ver lo que estás haciendo y cómo estás realizando la consulta... No podemos saber si no están ocurriendo conversiones implícitas.
Postea:
- CREATE TABLE de cada tabla en la consulta.
- La consulta (sin PHP o lenguaje ajeno al SQL), completa.
- Si es posible, una tabla demuestra donde se vea el defecto generado en la consulta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 12/09/2012, 13:50
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: orden de números ascendente

muchas gracias moderador.
El campo numero lo he pasado ahora a INT CON longitud 11 y todo sigue igual.
Esta es la consulta:

$_pagi_sql = "SELECT * FROM establecimientos WHERE marca LIKE '%".$nombre."%' OR direccion LIKE '%".$nombre."%' OR localidad LIKE '%".$nombre."%' ORDER BY localidad='vigo', direccion, numero ASC ";

Te agradeceria tu opinion
  #7 (permalink)  
Antiguo 12/09/2012, 13:52
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: orden de números ascendente

es decir
Campo 'numero'. INT(11)
nulo NO
predeterminado NO
  #8 (permalink)  
Antiguo 12/09/2012, 13:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: orden de números ascendente

Estás ordenando por tres campos y el número es sólo el último.
Código MySQL:
Ver original
  1. FROM establecimientos
  2.     marca LIKE '%".$nombre."%'
  3.     OR direccion LIKE '%".$nombre."%'
  4.     OR localidad LIKE '%".$nombre."%'
  5.     localidad='vigo',
  6.     direccion,
  7.     numero ASC
Eso significa que primero se evaluan los otros dos criterios, y recién cuando se encuentre un caso en el que el ambos datos sean exactamente iguales, a ese par los ordena según el número.

Por otro lado, ¿me puedes decir que se supone que quieres hacer al poner en el ORDER BY esto?:
Cita:
localidad='vigo'
Jamás he visto que alguien ponga eso allí.

¿Cuál es la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 12/09/2012, 14:03
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: orden de números ascendente

Te digo. Es una base de estableciemientos de varias ciudades gallegas.
Entonces esta es una consulta en un buscador.
Pongo localidad='vigo' porque asi le digo a la base de datos que sólo me refleje los resultados que obtenga en cada ciudad, no en todas, por eso quiero limitar la busqueda.
Ahora bien, imaginate que hay dos locales en la ciudad Vigo que los dos tienen la misma direccion pero uno es por ejemplo en la calle serrano 1 y el otro en la calle serrano 2. Pero el de la calle serrano 2 fue el primero en ponerlo en la base de datos.
ahora si hago ese select,


$_pagi_sql = "SELECT * FROM establecimientos WHERE marca LIKE '%".$nombre."%' OR direccion LIKE '%".$nombre."%' OR localidad LIKE '%".$nombre."%' ORDER BY localidad='vigo', direccion, numero ASC ";


me aparece primero ordenado el de la calle serrano 2 y yo queria que fuera por orden ascendente de calle, es decir, primero el de la calle serrano uno.

Me entiendes?. muchas gracias. Se te puede ocurrir algo?
  #10 (permalink)  
Antiguo 12/09/2012, 14:12
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: orden de números ascendente

la verdad, es que me has ayudado muchisimo.
Estaba pensando lo que me has dicho mucho e hice este select y ahora si que me aparece como quiero...


$_pagi_sql = "SELECT * FROM locales WHERE marca LIKE '%".$nombre."%' OR direccion LIKE '%".$nombre."%' OR localidad LIKE '%".$nombre."%' AND localidad='vigo' ORDER BY direccion, numero ASC ";

muchisimas gracias por atenderme moderador. Gran trabajo haceis.
Saludos
  #11 (permalink)  
Antiguo 12/09/2012, 14:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: orden de números ascendente

1) Postea una captura de datos (tabla de resultado de la consulta), para poder ver concretamete lo que dices que está ocurriendo. Si yo construyo un caso imaginario con la información que nos das, no se cumple lo que dices que obtienes, sino lo que te esto diciendo que debería devovler...

2) Cuando pedimos el CREATE TABLE es eso exactamente lo que necesitamos que postees. No me sirve que describas. Lo que quiero ver es lo que realmente está definido. No lo pedimos por capricho, sino porque el forista a veces omite información relevante sin saberlo.

3) El filtro por ciudad (localidad = 'vigo' ) debe ir en el WHERE, no en el ORDER BY. En el contexto que lo estás poniendo podría estar evaluando la columna 1 (si localidad = 'vigo' es TRUE su valor analítico es 1), lo que explicaría el orden de los números, y no lo que supones.
En todo caso, deberías poner:
Código MySQL:
Ver original
  1. FROM establecimientos
  2.     localidad='vigo'
  3.     AND
  4.     (marca LIKE '%".$nombre."%'
  5.     OR direccion LIKE '%".$nombre."%'
  6.     OR localidad LIKE '%".$nombre."%' )
  7.     direccion,
  8.     numero ASC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 12/09/2012, 14:18
 
Fecha de Ingreso: agosto-2012
Ubicación: vigo
Mensajes: 84
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: orden de números ascendente

la verdad, es que me has ayudado muchisimo.He puesto lo mismo que tu pero despues de limitar la busqueda.
Te agradezco muchisimo tus opiniones y lo que suponen para mi. Tenias mucha razon con tus fundamentos.
Un saludo

Etiquetas: ascendente, 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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 12:40.