Puoi usare FIND_IN_SET()
e GROUP_CONCAT()
su questo,
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
USCITA
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Come nota a margine, questa query potrebbe non funzionare in modo efficiente come previsto. Si prega di normalizzare correttamente la tabella non salvando i valori separati da una virgola.
AGGIORNAMENTO
GROUP_ID
è abbastanza confuso. Non è PersonIDList
? Ad ogni modo, ecco il mio schema di progettazione suggerito:
Tabella PERSON
- ID persona (PK)
- Nome Persona
- altre colonne..
Tabella GRUPPI
- ID gruppo (PK)
- Nome gruppo
- altre colonne..
Tabella PERSON_GROUP
- PersonID (FK) (contemporaneamente PK con la colonna GroupID)
- ID gruppo (FK)