2009-11-22 51 views
0

我想從第三個表中存儲一個(文件)到許多(關鍵字)關係的橋接的兩個表導出一些數據。mySQL JOIN語法使用橋接表

表是像這樣:

files 
id, url, title 

keywords 
id, word 

bridge 
file, word 

我想是產生具有每個文件一行像這樣的出口:

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

不勝感激任何意見!

+0

如果是_really_一個一對多的關係,你不需要額外的表,你只有真正需要的外國鍵。然而,從你的解釋來看,你所擁有的實際上是一個多對多的關係(在這種情況下,需要一個額外的表)。 – shylent 2009-11-22 16:00:06

回答

2

您可以使用GROUP_CONCAT的關鍵字在GROUP BY查詢合併:

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中接受教育,而不僅僅是在問題出現時學習它。我自學perl和PHP,但SQL對我來說更慢。任何有關以全面和有組織的方式學習的建議? – jerrygarciuh 2009-11-22 16:30:16