0

我正在尝试“连接”单行中多行的描述。

我有这些表:

tb_employees:

+---------------+---------------+
|  id_employee  |   employee    |
+---------------+---------------+
|     1         | Robert Tomson |
|     2         | Jhonatan Weg  |
|     3         |   Eva Uhte    |
+---------------+---------------+

tb_要求:

+---------------+-----------------+
|  id_requirem  |    requirem     |
+---------------+-----------------+
|     11        |      Photo      |
|     12        | Criminal Record |
|     13        |  Shooting Test  |
+---------------+-----------------+

tb_详细信息:

+-----------------+---------------------+-------------------------+
|    id_detail    |     id_employee     |       id_requirem       |
+-----------------+---------------------+-------------------------+
|        1        |          1          |          11             |
|        2        |          1          |          12             |
|        3        |          1          |          13             |
|        4        |          2          |          11             |
|        5        |          2          |          13             |
|        6        |          3          |          12             |
|        7        |          3          |          13             |
+-----------------+---------------------+-------------------------+

我必须SELECT query像这样显示:

+-------------------------+----------------------------------------+
|      employee           |               requirem                 |
+-------------------------+----------------------------------------+
|      Robert Tomson      | Photo - Criminal Record - Shooting Test|
|       Jhonatan Weg      |       Photo - Shooting Test            |
|         Eva Uhte        |     Criminal Record - Shooting Test    |
+-------------------------+----------------------------------------+ 

老实说,我真的不知道怎么做:S

有任何想法吗?谢谢你的答案。

4

3 回答 3

1

利用GROUP_CONCAT()

SELECT e.employee, GROUP_CONCAT(r.requirem ORDER  BY r.requirem SEPARATOR ' - ') requirements
  FROM tb_employees e LEFT JOIN tb_details d
    ON e.id_employee = d.id_employee JOIN tb_requirements r
    ON d.id_requirem = r.id_requirem
 GROUP BY e.id_employee, e.employee

输出:

| 员工 | 要求 |
|---------------|--------------------------------- --------|
| 罗伯特汤森 | 犯罪记录- 照片- 射击测试| 高分辨率照片| CLIPARTO
| 乔纳坦韦格 | 照片- 拍摄测试|
| 伊娃乌特 | 犯罪记录 - 射击测试 |

这是SQLFiddle演示

于 2013-11-08T21:43:36.663 回答
0

编辑:

您应该在 requirem 字段中使用 GROUP_CONCAT 和 GROUP BY。

于 2013-11-08T21:41:44.627 回答
0

您需要使用group_concat以下方法:

SELECT  group_concat(distinct(e.employee) separator ', ') , group_concat(r.requirem separator ', ') 
FROM TB_DETAILS d
          JOIN TB_EMPLOYEES e ON d.id_employee = e.id_employee
          JOIN tb_requirements r ON d.id_requirem = r.id_requirem


| GROUP_CONCAT(DISTINCT(E.EMPLOYEE) SEPARATOR ', ') |  GROUP_CONCAT(R.REQUIREM SEPARATOR ', ') |
|---------------------------------------------------|------------------------------------------|
|   Robert Tomson, Jhonatan Weg, Eva Uhte           | Photo, Criminal Record, Shooting Test,   |
|                                                   | Photo, Shooting Test, Criminal Record,   | 
|                                                   |  Shooting Test                           | 
于 2013-11-08T21:45:16.623 回答