Mysql
 sql >> Base de données >  >> RDS >> Mysql

JOIN et GROUP_CONCAT avec trois tables

Ce n'est pas particulièrement difficile.

  1. Joignez les trois tables à l'aide de la clause JOIN.
  2. Utilisez Group_concat sur les champs qui vous intéressent.
  3. 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 

DEMO

Mettre à jour LEFT JOIN lorsque l'utilisateur n'a pas d'entrées dans User_Sports selon les commentaires