Vous pouvez utiliser FIND_IN_SET()
et GROUP_CONCAT()
sur ce,
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
SORTIE
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
En passant, cette requête peut ne pas fonctionner aussi efficacement que prévu. Veuillez normaliser votre tableau correctement en ne sauvegardant pas les valeurs séparées par une virgule.
MISE À JOUR
GROUP_ID
est assez déroutant. N'est-ce pas PersonIDList
? Quoi qu'il en soit, voici ma suggestion de conception de schéma :
Table PERSONNE
- ID de personne (PK)
- NomPersonne
- autres colonnes..
Tableau GROUPE
- ID de groupe (PK)
- NomGroupe
- autres colonnes..
Tableau PERSON_GROUP
- PersonID (FK) (en même temps PK avec la colonne GroupID)
- ID de groupe (FK)