Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Junte uma linha a várias linhas em outra tabela


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

Você quer a função MySQL GROUP_CONCAT ( documentação ) para retornar uma lista separada por vírgulas do valor PROPERTIES.property.

Usei um LEFT JOIN em vez de um JOIN para incluir registros PEOPLE que não possuem valor na tabela PROPERTIES - se você quiser apenas uma lista de pessoas com valores na tabela PROPERTIES, 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

Eu percebo que isso é um exemplo, mas usar um nome é uma má escolha para integridade referencial quando você considera quantos "John Smith" existem. Atribuir um user_id, sendo um valor único por usuário, seria uma escolha melhor.