2つの列を結合し、右側のテーブルの列は、左の表の行にrefrencedている列と左ごとに1つの行を取得するためのクエリ

ダーニヤールMadmolil:

hellow.Iは、このような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        | 
+------------+----------+

私は以下のようなすべての製品とその色(ただし、1つの配列の列内のすべての色)を取得するためにクエリを書きたいです。

+-------+-------+---------------+
| pro_id|  name |    colors     |
+-------+-------+---------------+
+------+-------+----------------+
|    1 | shirt |red,yellow,black|
+------+-------+----------------+
郵便番号:

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=24077&siteId=1