Anda dapat menggunakan FIND_IN_SET()
dan GROUP_CONCAT()
ini,
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
KELUARAN
╔══════════╦═════════════════╗
║ GROUP_ID ║ NAME ║
╠══════════╬═════════════════╣
║ 1 ║ Person1 ║
║ 2,3 ║ Person2,Person3 ║
╚══════════╩═════════════════╝
Sebagai catatan tambahan, kueri ini mungkin tidak bekerja secara efisien seperti yang diharapkan. Harap normalkan tabel Anda dengan benar dengan tidak menyimpan nilai yang dipisahkan oleh koma.
PERBARUI
GROUP_ID
cukup membingungkan. Bukan PersonIDList
? Bagaimanapun, inilah desain skema yang saya sarankan:
Tabel PERSON
- PersonID (PK)
- Nama Orang
- kolom lain..
Tabel GRUP
- ID Grup (PK)
- Nama Grup
- kolom lain..
Tabel PERSON_GROUP
- PersonID (FK) (bersamaan PK dengan kolom GroupID)
- IDGrup (FK)