Non conosco l'accenditore di codice, ma fondamentalmente vuoi che prima esegua l'unione e poi applichi l'ordine sull'intero set. Ciò richiederebbe una sottoquery. Dovrebbe risultare nella seguente query SQL:
select * from
((SELECT * FROM media m INNER JOIN category c ON m.category_id = c.id )
UNION ALL
(SELECT * FROM media m INNER JOIN category c ON m.category_id = c.id)) T
ORDER BY m.media_files DESC LIMIT 3
Spero che ti aiuti un po'.