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)