2011-04-29 11 views
1

을 결합한다.가져 오는 데이터가 나는 다음과 같은 테이블이

SELECT post. * , author.username, 
GROUP_CONCAT(DISTINCT tag.name ORDER BY tag.name DESC SEPARATOR ',') AS tags 
FROM author, post 
JOIN post_tags ON post.id = post_tags.thread_id 
JOIN tag ON post_tags.tag_id = tag.id 
WHERE author.id = post.author_id 

여기서 내가 뭘 잘못하고 있니?

+0

일반적으로 GROUP BY 절과 함께'GROUP_CONCAT()'을 사용합니다. –

+0

제목에 ** four ** 표가 표시되어야합니다 –

+0

그래, 내가 만든 후 바로 (mem?) 캐시 된 버전을보고있었습니다. – jonnnnnnnnnie

답변

4

일반적으로 GROUP_CONCAT()GROUP BY 절을 사용합니다.

GROUP BY이 없으면 모든 행을 하나로 그룹화하여 모든 태그의 그룹 연결을 표시합니다.

첫 번째 스레드 데이터는 MyQSL 작동 불량의 부산물로 그룹화 필드에 종속되지 않는 SELECT 필드를 표시 할 수 있습니다 (사용자의 경우 없음).

끝에 GROUP BY post.id을 추가하여 쿼리를 시도하십시오.

SELECT post. * 
    , author.username 
    , GROUP_CONCAT(DISTINCT tag.name ORDER BY tag.name DESC SEPARATOR ',') 
     AS tags 

FROM author 
    JOIN post 
    ON author.id = post.author_id 
    JOIN post_tags 
    ON post.id = post_tags.thread_id 
    JOIN tag 
    ON post_tags.tag_id = tag.id 

GROUP BY post.id 
관련 문제