Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JOIN und GROUP_CONCAT mit drei Tabellen

Es ist nicht besonders schwierig.

  1. Fügen Sie die drei Tabellen mit der JOIN-Klausel zusammen.
  2. Verwenden Sie Group_concat für die Felder, die Sie interessieren.
  3. Vergessen Sie nicht die GROUP BY-Klausel für die Felder, die Sie nicht verketten oder seltsam sind Dinge werden passieren


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

Aktualisieren LEFT JOIN, wenn der Benutzer laut Kommentaren keine Einträge in User_Sports hat