Algo tan simple como:
Lo que debes crear a través de PHP es una serie de SELECT con la clausula UNION intercalada, y sólo al final poner el ORDER BY.
UNION devuelve los resultados de cada consulta agregados a la de las otras, pero elimina todos los duplicados.
El ORDER BY sólo puede ir al final, en la última consulta, porque todo el conjunto es una única consulta, y no puede haber dos ORDER BY en una misma consulta. Tampoco puede haber dos GROUP BY ni LIMIT. En todos estos casos se deben poner una sola vez y al final.
Como esto se creará por PHP, la codificación del bloque es algo complicada. Para eso te sugiero que consultes en el
Foro de PHP, donde te pueden guiar mejor (yo lo hago, pero en VB.Net).