join جدول با یک فیلد با مقدار جداشده با کاما
تاریخ انتشار:
28 اسفند 1397
به طور مثال یک جدول مانند زیر می باشد
Positions Table
╔══════════╦═════════════════╗
║ id ║ name ║
╠══════════╬═════════════════╣
║ 1 ║ Executive ║
║ 2 ║ Corp Admin ║
║ 3 ║ Sales ║
║ 4 ║ Art ║
║ 5 ║ Marketing ║
╚══════════╩═════════════════╝
و در جدول دوم به صورت زیر اطلاعات ذخیره شده است
Notes Table
╔══════════╦═════════════════╗
║ nid ║ forDepts ║
╠══════════╬═════════════════╣
║ 1 ║ 1,2,4 ║
║ 2 ║ 4,5 ║
╚══════════╩═════════════════╝
میخواهیم خروجی مانند زیر داشته باشیم
╠══════════╬════════════════════════════╣
║ 1 ║ Executive, Corp Admin, Art ║
║ 2 ║ Art, Marketing ║
╚══════════╩════════════════════════════╝
جهت انجام این کار مطابق قطع کد زیر میتوان join بین دو جدول بدست آورد
SELECT a.nid,
GROUP_CONCAT(DISTINCT b.name ORDER BY b.id) DepartmentName
FROM Notes a
INNER JOIN Positions b
ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP BY a.nid
منبع https://stackoverflow.com/a/19101646/4406856