Cita: Como es posible que ordene los datos sin meter esa variable en la consulta sql?
Porque por default MySQL ordena según el valor de las columnas de izquierda a derecha, y en este caso además, los UNION ALL segmentan el ordenamiento entre si (cada consulta separadamente como subconjunto), mientras que el ORDER BY final ordenaría
todo el resultado como un único conjunto.
Creo que te vendría bien profundizar sobre el SQL...
Por cierto, ¿capturaste al final el echo de la consulta?
¿Puedes mostrárnoslo?