私はcode-igniterを知りませんが、基本的には、最初にユニオンを実行してから、セット全体に順序を適用する必要があります。これにはサブクエリが必要です。次の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
お役に立てば幸いです。