Mysql
 sql >> Base de données >  >> RDS >> Mysql

Joindre une ligne à plusieurs lignes dans une autre table

Utiliser :

   SELECT x.name,
          GROUP_CONCAT(y.property SEPARATOR ', ')
     FROM PEOPLE x
LEFT JOIN PROPERTIES y ON y.name = x.name
    WHERE x.age > 26
 GROUP BY x.name

Vous voulez la fonction MySQL GROUP_CONCAT ( documents ) afin de renvoyer une liste séparée par des virgules de la valeur PROPERTIES.property.

J'ai utilisé un LEFT JOIN plutôt qu'un JOIN afin d'inclure les enregistrements PEOPLE qui n'ont pas de valeur dans la table PROPERTIES - si vous voulez seulement une liste de personnes avec des valeurs dans la table PROPERTIES, utilisez :

   SELECT x.name,
          GROUP_CONCAT(y.property SEPARATOR ', ')
     FROM PEOPLE x
     JOIN PROPERTIES y ON y.name = x.name
    WHERE x.age > 26
 GROUP BY x.name

Je me rends compte que c'est un exemple, mais l'utilisation d'un nom est un mauvais choix pour l'intégrité référentielle quand on considère le nombre de "John Smith" qu'il y a. Attribuer un user_id, étant une valeur unique par utilisateur, serait un meilleur choix.