sql >> Base de Datos >  >> RDS >> Mysql

JOIN y GROUP_CONCAT con tres tablas

No es particularmente difícil.

  1. Une las tres tablas usando la cláusula JOIN.
  2. Utilice Group_concat en los campos que le interesen.
  3. No olvide la cláusula GROUP BY en los campos que no está concatenando o raro cosas van a pasar


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

Actualizar LEFT JOIN para cuando el usuario no tiene entradas en User_Sports según los comentarios