2015-01-15 2 views
0

테이블 : 북마크MySQL은 외부 여러 테이블을 조인 왼쪽

bid  bname tagid1  tagid2  tagid3 
-------------------------------------------------------------------- 
    1  bookmark1 1001  1002  1003 
    2  bookmark2 1002     1005 
    3  bookmark3    1003  1003 
    4  bookmark4       1003 
    5  bookmark5 1001     
    6  bookmark5 1002     1003 

테이블 : 태그

tagid  tagname 
-------------------------- 
    1001  Java 
    1002  PHP 
    1003  Ruby 
    1004  Node.js 
    1005  Go 

내가 얻을 것으로 예상 결과는 다음과 같습니다

bid  bname tagName1 tagName2 tagName3 
-------------------------------------------------------------------- 
    1  bookmark1 Java  PHP   Ruby 
    2  bookmark2 PHP      Go 
    3  bookmark3    Ruby  Ruby 
    4  bookmark4       Ruby 
    5  bookmark5 Java     
    6  bookmark5 PHP      Ruby 

어떻게 할 수 알 겠어?

+1

은 (는) 태그가 고정 된 번호입니까? 또는 유연성 –

+0

책갈피 테이블의 각 태그에 대해 태그 테이블을 한 번 결합하십시오. – jpw

+0

@ POHH auto_increment –

답변

5

동일한 테이블을 여러 번 가입해야합니다. 당신은 BTW 북마크 - 태그의 매핑 다른 테이블을 추가하여 테이블 디자인을 변경하는 것을 고려한다 그들에게

select b.id, b.bname, 
     t1.name as tagName1, 
     t2.name as tagName2, 
     t3.name as tagName3 
from bookmark b 
left join tag t1 on t1.tagid = b.tagid1 
left join tag t2 on t2.tagid = b.tagid2 
left join tag t3 on t3.tagid = b.tagid3 

을 구분하기 위해 각각의 테이블 이름 별칭이 필요합니다. 그런 다음 각 책갈피에 대해 원하는 수의 태그를 가질 수 있습니다.

+2

이것은 고정 된 수의 태그에 대한 것이라고 말할 가치가 있다고 생각합니다. –

+0

현재 테이블 디자인에는 정확히 3 개의 가능한 태그가 있습니다 –

+0

예, 맞습니다. 책갈피 테이블에 신경을 쓰지 않았습니다. +1 –