Como hacer selección y ordenación de registros

Tengo una tabla que contiene varios campos, entre ellos esta, NOMBRE, STATUS. Suponiendo que la tabla contenga estos datos respectivamente:
'ALMENDAREZ','INI'
'RODRIGUEZ','INI'
'ALVAREZ','ORD'
'JUAREZ','ORD'
'PEREZ','TRA'
'AGUIRRE','TRA'
Quiero ordenarlos por el campo STATUS y luego por NOMBRE pero primero me debe ordenar los STATUS = 'INI' o STATUS = 'ORD' y ordenarlos por nombre, luego me debe tomar los STATUS = 'TRA' y ordenarlos por nombre de manera que me queden ordenados así:
'ALMENDAREZ','INI'
'ALVAREZ','ORD'
'JUAREZ','ORD'
'RODRIGUEZ','INI'
'AGUIRRE','TRA'
'PEREZ','TRA'
También he trabajado con oracle y ahí hay una función DECODE() quise utilizarla aquí en MySQL y me manda error, hay una función similar a eso o de que otra forma se puede soluciionar mi problema...
Espero me haya explicado lo suficiente y gracias por la atención.

1 respuesta

Respuesta
1
Las instrucciones SQL solo las permite ordenar por orden alfabético, ascendente o descendente.
La consulta sería más o menos así:
Select * from tabla ORDER BY status,nombre ASC
en este caso te quedarían
'ALMENDAREZ','INI'
'RODRIGUEZ','INI'
'ALVAREZ','ORD'
'JUAREZ','ORD'
'AGUIRRE','TRA'
'PEREZ','TRA'
Gracias por tu respuesta, como te comento en oracle hago por ejemplo la siguiente instrucción: "select DECODE(status,'INI','INI','ORD','INI', 'TRA', 'TRA') as nuevostatus, nombre order by nuevo status, nombre asc" y esta instrucción de SQL si lo permite el servidor de ORACLE, en MySQL manda error si lo pongo tal cual, no se la sintaxis correcta de la función sin embargo si la reconoce el servidor de MySQL...
Gracias por la respuesta
Te agradezco mucho tu ayuda, ya lo probé y funciona muy bien
He estado averiguando y la instrucción DECODE en Oracle en MySQL funciona como CASE, aquí te mando un ejemplo
oracle:
select DECODE(job_lvl,1,'level 1',2,'level 2','Unknown level') into job_level from employee where job_id>0;
end;
MYSQL:
select CASE job_lvl
WHEN 1 THEN 'level 1
WHEN 2 THEN 'level 2'
ELSE 'Unknown level' end
into job_level from employee where job_id>0 ;
end ;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas