0

表 1 - 作業指示書

╔══════════╦══════════════╦══════════════╗
║ id       ║    wpeople   ║  start_date  ║
╠══════════╬══════════════╬══════════════╣
║ 1        ║ 1,2,4        ║  02.08.2016  ║
║ 2        ║ 4,5          ║  28.09.2016  ║
╚══════════╩══════════════╩══════════════╝

表 2 - 従業員

╔══════════╦═════════════════╗
║ id       ║    name         ║
╠══════════╬═════════════════╣
║ 1        ║ John            ║
║ 2        ║ Ben             ║
║ 3        ║ Ian             ║
║ 4        ║ Hank            ║
║ 5        ║ George          ║
╚══════════╩═════════════════╝

プロジェクトで働く必要がある人のためのアウトプットの選択

╔══════════╦════════════════╦════════════╗
║ 1        ║ John,Ben,Hank  ║ 02.08.2016 ║
║ 2        ║ Hank,George    ║ 28.09.2016 ║
╚══════════╩════════════════╩════════════╝

GROUP_CONCAT と FIND_IN_SET を試しました

SELECT  w.id,
        GROUP_CONCAT(e.name ORDER BY e.id) workorder
FROM    workorder w
        INNER JOIN employees e
            ON FIND_IN_SET(e.id, a.wpeople) > 0
GROUP   BY w.id

しかし、出力は

╔══════════╦════════════════╦════════════╗
║ 1        ║ John           ║ 02.08.2016 ║
║ 1        ║ Ben            ║ 02.08.2016 ║
║ 1        ║ Hank           ║ 02.08.2016 ║
║ 2        ║ Hank           ║ 28.09.2016 ║
║ 2        ║ George         ║ 28.09.2016 ║
╚══════════╩════════════════╩════════════╝

私はこれをGoogleで検索し、解決策はGROUP_CONCAT - FIND_IN_SETです。この機能をよく理解していなかったのかもしれません。

ありがとう!ステファン

4

1 に答える 1