0

GROUP_CONCAT 関数の使用方法がわかりません。クエリが、実際には必要のない値を繰り返しているように見えるからです。

私は3つのテーブルを持っています:

------------------
Content
------------------
cid | title
2334 | Lorem Ipsum

------------------
Organizers
------------------
cid | name | sort
2334 | John Doe | 0

------------------
Participants
------------------
cid | name | sort
2334 | Jane Doe | 0
2334 | Bob Hope | 1
2334 | Bart Simpson | 2

以下を生成するクエリを作成しようとしています。

cid | title | organizers | participants
2334 | Lorem Ipsum | John Doe | Jane Doe, Bob Hope, Bart Simpson

したがって、GROUP_CONCAT を使用しようとしています。しかし、値が繰り返されているため、探している結果を出力する方法がわかりませんか?

SELECT GROUP_CONCAT(co.name) as organizers, 
GROUP_CONCAT(cp.name) FROM content n 
LEFT JOIN organizers co ON n.cid = co.cid 
LEFT JOIN participants cp ON n.cid = cp.cid 
WHERE n.cid = 2334

上記の結果は次のとおりです。

cid | title | organizers | participants
2334 | Lorem Ipsum | John Doe, John Doe, John Doe | Jane Doe, Bob Hope, Bart Simpson
4

2 に答える 2

2
select group_concat(distinct co.name)

詳細: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

構文

GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | 式}
[ASC | DESC] [,列名 ...]]
[SEPARATOR str_val])
于 2011-01-18T15:08:42.457 に答える
1
SELECT n.cid, n.Title,
  GROUP_CONCAT(DISTINCT co.name ORDER BY co.sort) as organizers, 
  GROUP_CONCAT(cp.name ORDER BY cp.sort) 
FROM Content n 
LEFT JOIN Organizers co ON n.cid = co.cid 
LEFT JOIN Participants cp ON n.cid = cp.cid 
GROUP BY n.cid
于 2011-01-18T15:13:34.473 に答える