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

mysql une dos tablas con identificadores separados por comas

Puedes usar FIND_IN_SET() y GROUP_CONCAT() en esto,

SELECT  b.Group_ID, GROUP_CONCAT(a.name) name
FROM    Table2 b
        INNER JOIN Table1 a
            ON FIND_IN_SET(a.ID, b.Group_ID) > 0
GROUP   BY b.Group_ID

SALIDA

╔══════════╦═════════════════╗
║ GROUP_ID ║      NAME       ║
╠══════════╬═════════════════╣
║ 1        ║ Person1         ║
║ 2,3      ║ Person2,Person3 ║
╚══════════╩═════════════════╝

Como nota al margen, es posible que esta consulta no funcione de manera eficiente como se esperaba. Normalice su tabla correctamente al no guardar los valores separados por una coma.

ACTUALIZAR

GROUP_ID es bastante confuso. ¿No es PersonIDList? ? De todos modos, aquí está mi diseño de esquema sugerido:

Tabla PERSONA

  • ID de persona (PK)
  • Nombre de la persona
  • otras columnas..

Tabla de GRUPOS

  • ID de grupo (PK)
  • Nombre del grupo
  • otras columnas..

Tabla PERSON_GROUP

  • PersonID (FK) (al mismo tiempo PK con la columna GroupID)
  • ID de grupo (FK)