mysql では、次のように、 group by を使用してクエリを実行するときに、列挙型フィールドを列に並べて取得する必要があります。
以下のような表があります
mysql> describe tabex;
+---------+----------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| personid| int(11) | YES | | NULL | |
| color | enum('red','blue','white') | YES | | NULL | |
+---------+----------------------------+------+-----+---------+----------------+
さまざまなシャツがあります。列 personid はその人物 ID を示し、color は彼のシャツの色を示します。
表のデータは次のとおりです
mysql> select * from tabex;
+----+----------+-------+
| id | personid | color |
+----+----------+-------+
| 1 | 1 | red |
| 2 | 1 | white |
| 3 | 2 | blue |
| 4 | 2 | red |
+----+----------+-------+
4 rows in set (0.00 sec)
クエリを実行すると、このような結果が得られます
mysql> select personid , color from tabex group by personid;
+----------+-------+
| personid | color |
+----------+-------+
| 1 | red |
| 2 | blue |
+----------+-------+
しかし、私は以下のような結果が欲しい
+----------+-------------+
|personid | color |
+----------+-------------+
|1 | red,white |
|2 | blue,red |
| | |
+----------+-------------+
group by と集計 (enum の場合) を使用して、上記の結果を取得するにはどうすればよいですか。
これは、count または sum 関数と group by を使用して得られるように、enum フィールドの結果を取得したいということです。