2009-11-22 2 views
0

하나 (파일)에서 다수 (키워드) 관계를 저장하는 세 번째 테이블로 연결된 두 테이블의 데이터를 내보내려고합니다.브리징 테이블을 사용하는 mySQL JOIN 구문

테이블과 같이 있습니다 :

files.id, files.url, files.title, keyword1|keyword2|keyword3|... 

크게 감사 어떤 조언 :

files 
id, url, title 

keywords 
id, word 

bridge 
file, word 

는 내가 원하는 것은이 같은 파일 당 하나 개의 행이 수출을 생산하는 것입니다!

당신은 GROUP BY 쿼리에 키워드를 결합 GROUP_CONCAT을 사용할 수 있습니다
+0

정말 오래된, 당신은 별도의 테이블이 필요하지 않습니다 일대 다 관계 A, 당신은 정말 외국 필요 키. 그러나, 당신의 설명을 보면, 실제로 가지고있는 것은 다 대다 관계입니다 (이 경우에는 여분의 테이블이 필요합니다). – shylent

답변

2

:이 경우

SELECT 
    files.id, files.url, files.title, 
    GROUP_CONCAT(keywords.word ORDER BY keywords.word SEPARATOR '|') keywords 
FROM 
    files 
    LEFT OUTER JOIN bridge ON bridge.file = files.id 
    LEFT OUTER JOIN keywords ON keywords.id = bridge.word 
GROUP BY 
    files.id, files.url, files.title 
+0

답장 Phil을 주셔서 대단히 감사합니다! 그걸 해결하고 공부하고/놀고 싶은 새로운 것들을 나에게주었습니다! 문제가 발생할 때 SQL을 배우는 것 이상으로 교육을받을 필요가 있습니다. 나는 펄과 PHP를 가르쳤지 만 SQL은 나에게 천천히 다가왔다. 포괄적이고 체계적인 방식으로이를 학습하기위한 권장 사항은 무엇입니까? – jerrygarciuh