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

Unir una fila a varias filas en otra tabla

Usar:

   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

Quiere la función MySQL GROUP_CONCAT ( documentación ) para devolver una lista separada por comas de PROPIEDADES.valor de propiedad.

Usé LEFT JOIN en lugar de JOIN para incluir registros de PERSONAS que no tienen un valor en la tabla PROPIEDADES; si solo desea una lista de personas con valores en la tabla PROPIEDADES, use:

   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

Me doy cuenta de que este es un ejemplo, pero usar un nombre es una mala elección para la integridad referencial cuando considera cuántos "John Smith" hay. Asignar un user_id, siendo un valor único por usuario, sería una mejor opción.