join جدول با یک فیلد با مقدار جداشده با کاما

تاریخ انتشار: اسفند ۲۸, ۱۳۹۷

به طور مثال یک جدول مانند زیر می باشد

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *