запросить объединение двух столбцов и получить одну строку слева со столбцом, в котором массив правой таблицы связан с левой строкой таблицы - PullRequest
0 голосов
/ 04 марта 2020

hellow. У меня есть такой продукт tablt

+-------+-------+
|  id   |  name |
+-------+-------+
+-------+-------+
|   1   | shirt |
+-------+-------+

color table like below:
+-------+--------+
|   id  |  color |
+-------+--------+
+-------+--------+
|   1   |  red   |
+-------+--------+
+-------+--------+
|   2   | yellow |
+-------+--------+
+-------+--------+
|   3   |  black |
+-------+--------+

и таблица shirt_color:

+------------+----------+
| product_id | color_id |
+------------+----------+
+------------+----------+
| 1          | 1        |
+------------+----------+
+------------+----------+
| 1          | 2        |
+------------+----------+
+------------+----------+
| 1          | 3        | 
+------------+----------+

Я хочу написать запрос, чтобы получить все продукты и их цвета (но все цвета в одном столбце массива), как показано ниже:

+-------+-------+---------------+
| pro_id|  name |    colors     |
+-------+-------+---------------+
+------+-------+----------------+
|    1 | shirt |red,yellow,black|
+------+-------+----------------+

1 Ответ

1 голос
/ 04 марта 2020

используйте GROUP_CONCAT:

select a.id as pro_id,  a.name,
GROUP_CONCAT ( color ) as colors
from product a inner join shirt_color b on a.id = b.product_id 
inner join color c on c.id = b.color_id
group by a.id,  a.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...