Ich kenne Code-Igniter nicht, aber im Grunde möchten Sie, dass es zuerst die Vereinigung durchführt und dann die Reihenfolge über das gesamte Set anwendet. Dies würde eine Unterabfrage erfordern. Es sollte zu folgender SQL-Abfrage führen:
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
Hoffe es hilft dir etwas.