Můžete použít FIND_IN_SET()
a GROUP_CONCAT()
na tomto,
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
VÝSTUP
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Jako vedlejší poznámka, tento dotaz nemusí fungovat efektivně, jak se očekávalo. Proveďte prosím správnou normalizaci tabulky tím, že neukládejte hodnoty oddělené čárkou.
AKTUALIZACE
GROUP_ID
je dost matoucí. Není to PersonIDList
? ? Každopádně zde je můj navrhovaný návrh schématu:
Tabulka PERSON
- ID osoby (PK)
- Jméno osoby
- další sloupce..
Tabulka GROUP
- ID skupiny (PK)
- Název skupiny
- další sloupce..
Tabulka PERSON_GROUP
- ID osoby (FK) (současně PK se sloupcem GroupID)
- ID skupiny (FK)