Es, como dice pintix, sql.
Lo que hace es un case para asignar, al alias orden puesto en el select, valores lógicos para poder ordenarlos. Luego ordena por el alias. Por ejemplo, si tenemos en la db esto:
codigo, nombre
FO | uno
IT | dos
MC | tres
PR | cuatro
FO | cinco
FO | seis
PR | siete
Lo que sacara la consulta esta será:
Código PHP:
$sql = "
Select
codigo,
nombre,
(CASE codigo
WHEN 'MC' THEN 1
WHEN 'PR' THEN 2
WHEN 'IT' THEN 3
WHEN 'FO' THEN 4
ELSE 0 END) orden
from
tabla
order by
orden, nombre
";
$r = mysql_query($sql);
while( $rs = mysql_fetch_row( $r ) ){
echo $rs[2].'|'.$rs[1].'|'.$rs[0];
}
/* Salida
1 | tres | MC
2 | cuatro | PR
2 | siete | PR
3 |dos | IT
4 | cinco | FO
4 | seis | FO
4 |siete | FO
4 |uno | FO
*/
No se si se comprende lo que estoy tratando de hacer, trato nuevamente diciendo: Como los valores pr,mc,it,fo no tiene un patrón para el orden que desea obtener, lo que hago es mediante este case en el query, asignarle un valor a cada uno según el orden que quiera. Espero que se comprenda, sino vuelvo a tratar :P