Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JOIN e GROUP_CONCAT com três tabelas


Não é particularmente difícil.
  1. Junte as três tabelas usando a cláusula JOIN.
  2. Use Group_concat nos campos de seu interesse.
  3. Não se esqueça da cláusula GROUP BY nos campos que você não está concatenando ou estranho as coisas vão acontecer



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

Atualizar LEFT JOIN para quando o usuário não tiver entradas em User_Sports conforme comentários