Ce n'est pas particulièrement difficile.
- Joignez les trois tables à l'aide de la clause JOIN.
- Utilisez Group_concat sur les champs qui vous intéressent.
- N'oubliez pas la clause GROUP BY sur les champs que vous ne concaténez pas ou bizarre les choses vont arriver
SELECT u.id,
u.Name,
Group_concat(us.id_sport order by pref) sport_ids,
Group_concat(s.name order by pref) sport_names
FROM users u
LEFT JOIN User_Sports us
ON u.id = us.id_user
LEFT JOIN sports s
ON US.id_sport = s.id
GROUP BY u.id,
u.Name
Mettre à jour LEFT JOIN lorsque l'utilisateur n'a pas d'entrées dans User_Sports selon les commentaires