usa http://it2.php.net/usort e fai una funzione di comparazione adeguata... usa http://it2.php.net/strcmp per fare la comparazione degli username... se sono uguali (mi chiedo come sia possibile) ritorni il strcmp dei firstname ... o cmq implementa la tua logica... il discorso di ordinare i risultati nella query è "complicato", nel senso che dovrei capire perchè tu abbia usato una union ... invece di ordinare la union potresti fare una cosa del tipo

codice:
select * from (select users... union ... ) order by username, first_name;
o nell'equivalente sintassi mysql...