2009-11-22 49 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