Una pregunta..
Con qué sistema de bases de datos te ha funcionado esto?
Por lo menos con SQL Server, las consultas UNION solo permiten un solo ORDER BY que actúa sobre todos los registros de la UNION, y debe ir escrito al final de la sentencia.
De hecho, esas líneas que has puesto más arriba no tienen una sintaxis correcta en SQL Server:
Código:
select * FROM Reservas order by fecha
UNION
select * from ReservasEspeciales order by fecha
El primer ORDER BY daría error.
Quitándolo de ahí, solo quedaría el último, que actuaría sobre todos los registros de la UNION, y la sintaxis ya quedaría correcta.
Un saludo.