I have three tables:
users: sports: user_sports: id | name id | name id_user | id_sport | pref ---+-------- ---+------------
I think this is just a simple join and aggregation:
select u.id, u.name, group_concat(s.name order by pref separator ',') from user_sports us join users u on us.id_user = u.id join sports s on us.id_sport = s.id group by u.id, u.name