簡體   English   中英

MySQL-如何在一行中獲取多行

[英]MySQL - How to get multiple rows in a single row

我正在嘗試“ CONCAT”一行中多行的描述。

我有這些表:

tb_employees:

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

tb_requirements:

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

tb_details:

+-----------------+---------------------+-------------------------+
|    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

有任何想法嗎? 謝謝你的答案。

使用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

輸出:

|      EMPLOYEE |                            REQUIREMENTS |
|---------------|-----------------------------------------|
| Robert Tomson | Criminal Record - Photo - Shooting Test |
|  Jhonatan Weg |                   Photo - Shooting Test |
|      Eva Uhte |         Criminal Record - Shooting Test |

這是SQLFiddle演示

編輯:

您應該使用require_字段的GROUP_CONCAT和GROUP BY。

您需要使用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                           | 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM