Mysql
 sql >> Database >  >> RDS >> Mysql

JOIN e GROUP_CONCAT con tre tabelle

Non è particolarmente difficile.

  1. Unisci le tre tabelle usando la clausola JOIN.
  2. Utilizza Group_concat sui campi che ti interessano.
  3. 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 

DEMO

Aggiorna SINISTRA ISCRIVITI per quando l'utente non ha voci in User_Sports come da commenti