2015-04-27 148 views
0

我对接入世界相当陌生,并且我的所有知识都是从解剖模板和多个谷歌搜索中收集的,请耐心等待! 我已经完成了我的搜索,并找到了很多例子,但我不确定他们是否做我需要的东西,其中一个与我所要求的相似,但我不能将他的结果翻译成我的。多对多查询问题

首先快速回顾我想要完成的事情;我试图创建一个查询,列出每个位置以及伴随该位置的技能。大多数职位都具有相同的技能要求,但每个职位都有其他人完成的独特技能。例如; QB具有速度,敏捷性,加速度,力量,意识,投掷准确性以及与之相关的投掷能力。 RB拥有速度,敏捷性,加速度,力量,意识,控球能力以及与之相关的难以捉摸。

我有三张表;职位(列出所有职位),技能(列出所有技能)和职位技能(列出每个职位的多对多表以及与之相关的技能)。表是这样的:

PositionID(PK)|AutoNumber 
Position  |Short Text 

SkillID(PK) |AutoNumber 
SkillName  |Short Text 

PositionID(PK)|Number 
SkillID(PK) |Number 

我试图创建一个查询返回的位置和每个技能落在它下面。问题是,我的查询总是会返回列出每个职位多次,旁边有不同的技能,当我想要列出职位一次,其中每个职位。

Position(QB) | Skill | Skill | Skill | Skill 
Position(RB) | Skill | Skill | Skill | Skill 
Position(WR) | Skill | Skill | Skill | Skill 

最后,我想创建一个表单,用户输入关于玩家的一般细节并从组合框中选择位置。表单底部将显示与组合框中所选位置相关的技能。 任何帮助非常感谢,如果需要更多的信息指向我,我会提供它 谢谢你!

+2

你可以请包括查询,因为你目前写它,并简要说明你目前使用什么来输出结果? –

+0

我目前没有写过查询,因为我认为它会简单得多,我使用Access 2013的简单查询向导来构建一个返回上述结果的数据库,每个不同技能的相同位置的倍数关联,而不是技能列在旁边的每个相关技能。我会编辑我的帖子以更有帮助 –

+0

你的问题用mysql标记,但从你所说的话听起来你可能指的是MS Access。是对的吗? –

回答

0

除非我错过了一些东西,否则你应该可以做这样的事情 - 生成一个你想要的列表。这将是MySQL虽然...

SELECT 
Position, 
GROUP_CONCAT(SkillName) as Skills 
FROM Positions 
LEFT JOIN PositionSkills USING(PositionID) 
LEFT JOIN Skills USING(SkillID) 
GROUP BY PositionID 
+0

返回从条款 –

+0

中的语法错误您可能会喜欢SQL略有不同,我不确定。这是一个整洁的场所来设置场景并测试它们:http://sqlfiddle.com/ – dgig

+0

也许我不需要查询来完成?你怎么看?我为人们创建一个表单来放置细节,然后从组合框中选择一个位置。根据他们选择的位置,该位置的相应技能显示在附属于主体的子表单中。 –