2013-11-08 3 views
0

Я пытаюсь «CONCAT» описать несколько строк в одной строке.MySQL - Как получить несколько строк в одной строке

У меня есть эти таблицы:

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

Есть идеи? Спасибо за ответ.

+0

Документация - хорошее место для начала: http://dev.mysql.com/doc/refman/5.0/ru/join.html –

ответ

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 

Выход:

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

Вот SQLFiddle демо

+0

БОЛЬШОЕ БОЛЬШОЕ !!! ... Большое спасибо –

+0

@JhonatanSandoval Вы очень желанны. Я рад, что смог помочь :) – peterm

0

Edit:

Вы должны использовать GROUP_CONCAT и GROUP BY поле requirem.

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       | 
Смежные вопросы