Foros del Web » Programando para Internet » PHP »

ORDER BY personalizado

Estas en el tema de ORDER BY personalizado en el foro de PHP en Foros del Web. Hola amigos, Tengo una tabla y en ella los registros tienen un campo llamado estado, el valor de este campo puede ser: Aprobado Pendiente Rechazado ...
  #1 (permalink)  
Antiguo 19/12/2014, 14:29
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Pregunta ORDER BY personalizado

Hola amigos,

Tengo una tabla y en ella los registros tienen un campo llamado estado, el valor de este campo puede ser:
Aprobado
Pendiente
Rechazado


Hago mi consulta mysql pero necesito cuadrar el ORDER BY para que el orden sea primero las pendientes, luego las rechazadas y por ultimo las aprobadas, como podría hacer eso?
  #2 (permalink)  
Antiguo 20/12/2014, 08:32
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: ORDER BY personalizado

Hola.

Puedes solucionarlo de dos maneras:
1. usando un condicionante. Esto te sirve para pocos valores, como es tu caso. seria lo siguiente:

Código:
select * from tu_tabla order by  case estado when 'pendiente' then 1 when 'aprobado' then 2 when 'rechazado' then 3 else  4 end
2. usando una tabla de estados vinculada y con un campo de orden.

tabla 'estados'
id
descripcion
orden

y en tu_tabla, en lugar de un campo de texto 'estado', tener un campo int 'estados_id'. Luego, al hacer la consulta seria
Código:
select loquesea, estados.descripcion from tu_tabla left join estados on tu_tabla.estados_id=estados.id order by estados.orden
si algo no te queda claro, me lo dices

saludos.
  #3 (permalink)  
Antiguo 20/12/2014, 10:52
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Respuesta: ORDER BY personalizado

Lo solucione mucho mas fácil así:

Código Mysql:
Ver original
  1. ORDER BY FIELD(estado, 'Pendiente', 'Rechazado', 'Aprobado')

Etiquetas: mysql
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 03:12.