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

[SOLUCIONADO] Select en orden específico

Estas en el tema de Select en orden específico en el foro de Mysql en Foros del Web. Hola estimados! Estoy buscando como ordenar una consulta en un orden específico sin usar union ya que la tabla tiene muchos registros y hacer más ...
  #1 (permalink)  
Antiguo 24/06/2013, 15:42
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Select en orden específico

Hola estimados!

Estoy buscando como ordenar una consulta en un orden específico sin usar union ya que la tabla tiene muchos registros y hacer más de un select podría tomar mucho tiempo.

tengo una tabla con un campo llamado "pos" el cual tiene un valor entero de 1 a 4, lo que intento es que la consulta se ordene de esta forma:

1 - 3 - 2 - 4

en otras palabras la consulta debería ser algo así:
Código MySQL:
Ver original
  1. SELECT * FROM tabla ORDER BY pos (en orden 1,3,2,4)

lo cual debería devolverme los resultados de esta forma

campo1 campo2 pos
campo1 campo2 1
campo1 campo2 1
campo1 campo2 1
campo1 campo2 3
campo1 campo2 3
campo1 campo2 3
campo1 campo2 2
campo1 campo2 2
campo1 campo2 2
campo1 campo2 2
campo1 campo2 4
campo1 campo2 4
campo1 campo2 4
campo1 campo2 4

Es posble lograr algo así en mysql?

Gracias por su ayuda!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Última edición por gnzsoloyo; 24/06/2013 a las 16:50
  #2 (permalink)  
Antiguo 25/06/2013, 00:09
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: Select en orden específico

Cita:
Iniciado por stramin Ver Mensaje
Hola estimados!

Estoy buscando como ordenar una consulta en un orden específico sin usar union ya que la tabla tiene muchos registros y hacer más de un select podría tomar mucho tiempo.

tengo una tabla con un campo llamado "pos" el cual tiene un valor entero de 1 a 4, lo que intento es que la consulta se ordene de esta forma:

1 - 3 - 2 - 4

en otras palabras la consulta debería ser algo así:
Código MySQL:
Ver original
  1. SELECT * FROM tabla ORDER BY pos (en orden 1,3,2,4)

lo cual debería devolverme los resultados de esta forma

campo1 campo2 pos
campo1 campo2 1
campo1 campo2 1
campo1 campo2 1
campo1 campo2 3
campo1 campo2 3
campo1 campo2 3
campo1 campo2 2
campo1 campo2 2
campo1 campo2 2
campo1 campo2 2
campo1 campo2 4
campo1 campo2 4
campo1 campo2 4
campo1 campo2 4

Es posble lograr algo así en mysql?

Gracias por su ayuda!
No entiendo nada Si lo que quieres es ordenar los codigos del campo pos, entonces tenes que a la misma consulta que has propuesto, agregarle esto:

Código MySQL:
Ver original
  1. SELECT * FROM tabla ORDER BY pos + 0

Asi deberia funcionar, pero si quieres que arroje el resultado que muestras en tu post, no entiendo nada de lo que dices.

Saludos.
  #3 (permalink)  
Antiguo 25/06/2013, 04:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select en orden específico

Código MySQL:
Ver original
  1. SELECT * FROM tabla ORDER BY if(pos=1,1,if(pos=3,2,if(pos=2,3,pos)))

Esto sirve para este caso en particular...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 25/06/2013, 06:34
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Select en orden específico

Increible!

funciona perfectamente, jamás se me habría ocurrido usar un IF de esa forma.

muchas gracias!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #5 (permalink)  
Antiguo 25/06/2013, 07:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select en orden específico

Código MySQL:
Ver original
  1. SELECT * FROM tabla ORDER BY if(pos=3,2,if(pos=2,3,pos))

Aún más simple
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: campo, orden, registros, select, sql, tabla
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:00.