У меня есть следующие таблицы:

учитель

+------------+-------------+
|ID          |Name         |
+------------+-------------+
|1           |teacher1     |
|2           |teacher2     |
|3           |teacher3     |
+------------+-------------+

< Сильный > учит

+------------+-------------+
|teacher_ID  |specialty    |
+------------+-------------+
|1           |specialty1   |
|1           |specialty2   |
|2           |specialty1   |
|3           |specialty5   |
|3           |specialty8   |
|3           |specialty2   |
+------------+-------------+

То, что я пытаюсь сделать, это: я хочу запрос, который может получить мне следующее:

+--------------+------------------------------------------+
|teacher_name  |specialties                               |
+--------------+------------------------------------------+
|teacher1      |specialty1, specialty2                    |
|teacher2      |specialty1                                |
|teacher3      |specialty5, specialty8, specialty2        |
+--------------+------------------------------------------+

Поэтому я хочу, чтобы специальности каждого учителя были объединены, как указано выше, в значении столбца. Это вообще возможно сделать используя MySQL? Если это так, пожалуйста, дайте мне знать.

-2
jes 12 Апр 2019 в 07:26

2 ответа

Лучший ответ

Мы можем попробовать использовать GROUP_CONCAT здесь:

SELECT
    t1.ID,
    t1.Name,
    GROUP_CONCAT(t2.specialty) AS specialties
FROM teacher t1
LEFT JOIN teaches t2
    ON t1.ID = t2.teacher_ID
GROUP BY
    t1.ID,
    t1.Name;
1
Tim Biegeleisen 12 Апр 2019 в 04:41

Использовать group_concat()

select Name as teacher_name,group_concat(specialty) as specialties
from teacher a inner join teaches b
on a.id=b.teacher_id
group by b.teacher_id,name
0
Fahmi 12 Апр 2019 в 04:35