Non è particolarmente difficile.
- Unisci le tre tabelle usando la clausola JOIN.
- Utilizza Group_concat sui campi che ti interessano.
- Non dimenticare la clausola GROUP BY sui campi che non stai concatenando o strano le cose accadranno
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
Aggiorna SINISTRA ISCRIVITI per quando l'utente non ha voci in User_Sports come da commenti