2012-11-15 4 views
2

items, items_to_tagstags의 세 테이블이 있습니다. itemstags 테이블에는 고유 ID 열이 있고 items_to_tags 테이블에는 item_idtag_id 열이 있습니다. itemstags 테이블에서 모든 결과를 선택하는 방법이 있지만 모든 결과가 같은 레코드에 병합 되었습니까? 예를 들어MySQL이 한 테이블의 값을 다른 테이블의 레코드로 연결합니다.

,이 데이터가있는 경우 :

  • items :

    id  name 
    1  'item1' 
    2  'item2' 
    
  • tags :

    id  name 
    1  'tag1' 
    2  'tag2' 
    3  'tag3' 
    
  • items_to_tags :

    0123을
    item_id tag_id 
    1   1 
    1   2 
    1   3 
    2   3 
    

쿼리의 결과는 다음과 같아야합니다

item_id item_name tags 
1   'item1'  'tag1,tag2,tag3' 

답변

4

당신은 MySQL의 GROUP_CONCAT()를 사용할 수 있습니다

select i.id, 
    i.name, 
    group_concat(t.name SEPARATOR ', ') tags 
from items i 
left join items_to_tags it 
    on i.id = it.item_id 
left join tags t 
    on it.tag_id = t.id 
group by i.id, i.name 

참조 SQL Fiddle with Demo

결과 :

| ID | NAME |    TAGS | 
--------------------------------- 
| 1 | item1 | tag1, tag2, tag3 | 
| 2 | item2 |    tag3 | 
관련 문제