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