2011-01-18 10 views
0

クエリが実際には望んでいない値を繰り返すように見えるため、GROUP_CONCAT関数の使い方を理解していません。Mysql Group_Concat関数

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

をので、私はGROUP_CONCATを使用しようとしている:

------------------ 
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 

私が生成されますクエリを記述しようとしています:

私は3つのテーブルを持っています。しかし、値が繰り返されているので、私が探している結果を出力する方法がわかりません。

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 

答えて

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