2011-01-18 3 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 

내가 생산하는 쿼리를 작성하려고 해요 :

나는 세 개의 테이블이있다. 그러나 가치가 반복되고 있으므로 결과를 출력하는 방법을 모르겠습니다.

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