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

Como hacer un ORDER BY a partir de un numero

Estas en el tema de Como hacer un ORDER BY a partir de un numero en el foro de Mysql en Foros del Web. Hola a todos! Ando buscando y rebuscando y yo estoy casi seguro que se puede hacer... el problema es sencillo pero no doy con la ...
  #1 (permalink)  
Antiguo 30/08/2010, 02:33
 
Fecha de Ingreso: abril-2006
Mensajes: 3
Antigüedad: 18 años
Puntos: 0
Como hacer un ORDER BY a partir de un numero

Hola a todos!

Ando buscando y rebuscando y yo estoy casi seguro que se puede hacer... el problema es sencillo pero no doy con la forma. Tengo una tabla que el cliente puede ordenar segun un campo "orden" de manera manual. El caso es que tampoco debe ordenarlos todos, sino sencillamente numerar aquellos que considera más importantes para que salgan los primeros.

El caso es que al poner un ORDER BY ASC, para que ordenara el campo orden... los registros no ordenados (NULL o con valor 0) los pone los primeros, ni que decir tiene q es lo contrario de lo que quiero...

Asi que resumiendo... ¿hay alguna forma simple de ordenar los registros 1,2,3,4 y que el 0 lo ponga al final en vez de al principio?

Muchas gracias!
  #2 (permalink)  
Antiguo 30/08/2010, 04: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: Como hacer un ORDER BY a partir de un numero

¿Una forma sencilla?
No, porque el sentido del ORDER BY y su implementación es ordenar todos los registros devueltos.
Lo que si puedes hacer es separar en dos sentencias distintas los registros devueltos y realizar un UNION.
Código MySQL:
Ver original
  1.    (SELECT *  
  2.    FROM tabla
  3.    WHERE condiciones_para1_o_>1
  4.    ORDER BY campo) T1
  5.    UNION
  6.    (SELECT *  
  7.    FROM tabla
  8.    WHERE condiciones_para<=0
  9.    ORDER BY campo) T2;
Como verás no es una forma simple de hacerlo.
__________________
¿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 30/08/2010, 04:33
 
Fecha de Ingreso: abril-2006
Mensajes: 3
Antigüedad: 18 años
Puntos: 0
Respuesta: Como hacer un ORDER BY a partir de un numero

Muchas gracias gnzsoloyo... vamos con simple me referia a... "la mas simple posible"... El caso es que eso del UNION lo probé ayer (creo) que de forma parecida y me barajaba los resultados, o sea que me daba indistintamente un resultado y otro y anduve leyendo que si tenia por costumbre hacerlo así.

Por ahora me temo que voy a vender mi elegancia a cambio de tiempo... para no limitar el número de ordenamientos posibles, he sustiuido por un varchar y al que no está ordenado le he puesto por defecto una letra... para la proxima página seguiré meditando no me tengais muy encuenta este parchecillo.
  #4 (permalink)  
Antiguo 30/08/2010, 04:44
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: Como hacer un ORDER BY a partir de un numero

Cita:
Muchas gracias gnzsoloyo... vamos con simple me referia a... "la mas simple posible"... El caso es que eso del UNION lo probé ayer (creo) que de forma parecida y me barajaba los resultados, o sea que me daba indistintamente un resultado y otro y anduve leyendo que si tenia por costumbre hacerlo así.
Fijate si el esquema que probaste es el mismo que te estoy pasando. Lo crítico es que los dos ORDER BY deben estar dentro de subconsultas que generen tablas virtuales. Si no están así y las dejas por ejemplo así:
Código MySQL:
Ver original
  1. SELECT *  
  2. FROM tabla
  3. WHERE condiciones_para1_o_>1
  4. ORDER BY campo
  5. SELECT *  
  6. FROM tabla
  7. WHERE condiciones_para<=0
  8. ORDER BY campo;
no es lo mismo, porque el último ORDER BY opera sobre todo el conjunto de registros y suprime la acción de todo ORDER BY anterior.

Pruébalo. Es la forma en que yo hago cosas así y resultan bien.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: numero, order, partir
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 18:54.