Du kan bruge FIND_IN_SET()
og GROUP_CONCAT()
på dette,
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
OUTPUT
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Som en sidenote fungerer denne forespørgsel muligvis ikke effektivt som forventet. Normaliser venligst din tabel korrekt ved ikke at gemme værdier adskilt af et komma.
OPDATERING
GROUP_ID
er ret meget forvirrende. Er det ikke PersonIDList
? Uanset hvad, her er mit foreslåede skemadesign:
PERSON-tabel
- Person-ID (PK)
- Personnavn
- andre kolonner..
GRUPPETabel
- Gruppe-ID (PK)
- Gruppenavn
- andre kolonner..
PERSON_GROUP-tabel
- PersonID (FK) (samtidig PK med kolonne GroupID)
- Gruppe-ID (FK)