sql >> Databasteknik >  >> RDS >> Mysql

JOIN och GROUP_CONCAT med tre tabeller

Det är inte speciellt svårt.

  1. Sätt ihop de tre tabellerna med hjälp av JOIN-satsen.
  2. Använd Group_concat på de fält du är intresserad av.
  3. Glöm inte GROUP BY-satsen på fälten du inte sammanfogar eller konstigt saker kommer att hända


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

Uppdatera LEFT JOIN för när användaren inte har inlägg i User_Sports enligt kommentarer



  1. Databasen tas inte bort när du avinstallerar Android-appen

  2. Hur man hittar alla anslutna subgrafer i en oriktad graf

  3. Hur skapar man ett unikt index på en NULL-kolumn?

  4. Hur hittar jag relationer mellan tabeller som är långdistansrelaterade? MySQL