U kunt FIND_IN_SET()
. gebruiken en GROUP_CONCAT()
hierover,
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
UITGANG
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Even terzijde:deze query werkt mogelijk niet efficiënt zoals verwacht. Normaliseer uw tabel alstublieft op de juiste manier door geen waarden op te slaan gescheiden door een komma.
UPDATE
GROUP_ID
is nogal verwarrend. Is het niet PersonIDList
? Hoe dan ook, hier is mijn voorgestelde schemaontwerp:
PERSON-tabel
- Persoons-ID (PK)
- Persoonsnaam
- andere kolommen..
GROEP-tabel
- Groeps-ID (PK)
- Groepsnaam
- andere kolommen..
PERSON_GROUP Tabel
- PersonID (FK) (tegelijk PK met kolom GroupID)
- Groeps-ID (FK)