Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在MS Access中建立此关系(图片)_Database_Ms Access_Foreign Keys_Primary Key_Relationship - Fatal编程技术网

Database 如何在MS Access中建立此关系(图片)

Database 如何在MS Access中建立此关系(图片),database,ms-access,foreign-keys,primary-key,relationship,Database,Ms Access,Foreign Keys,Primary Key,Relationship,我需要将id_球员从桌上球员连接到桌上球员得分和球员协助。主键必须引用这两个 有办法吗 Access写下“关系已经存在” 我将感谢你的每一个回答 访问屏幕- 这是正确的解决方案吗 对于表中存在的每个外键引用;必须对主/基表进行单独的联接才能获取相关数据 就你而言;再次将玩家添加到您的查询中,并将其加入到目标中;当加入球员进球时。球员得分 至于原因:同一个连接不能同时获取两个数据段,因为它们表示与players表的不同关系 在SQL中,这看起来像: SELECT G.* , PS.id_

我需要将id_球员从桌上球员连接到桌上球员得分和球员协助。主键必须引用这两个
有办法吗
Access写下“关系已经存在”
我将感谢你的每一个回答

访问屏幕-

这是正确的解决方案吗

对于表中存在的每个外键引用;必须对主/基表进行单独的联接才能获取相关数据

就你而言;再次将玩家添加到您的查询中,并将其加入到目标中;当加入球员进球时。球员得分

至于原因:同一个连接不能同时获取两个数据段,因为它们表示与players表的不同关系

在SQL中,这看起来像:

SELECT G.*
     , PS.id_Player as ScoredByID_Player
     , PS.first_name as ScoredByfName
     , PS.last_name as ScoredBylName
     , PA.id_Player as AssistedByID_Player
     , PA.First_name as AssistedByfName
     , PA.Last_name as AssistedBylName
FROM GOALS G
INNER JOIN Players PS
 on G.id_Player = PS.Player_Score
LEFT JOIN Players PA
 on G.id_Player = PA.Player_Assist
请注意,我们将球员的场名化名,以便我们知道哪些球员得分,哪些球员辅助得分。为了可读性,我们还对表进行了别名,因为我们必须复制“Players”的副本,并让引擎跟踪我们所指的表;我们必须以不同的方式“命名”


我第二次离开外线是因为不是所有的分数都有助攻;但是所有的分数都有人给他们打分。因此,球员的第一次加入可以是内部加入,但第二次加入可能没有助攻;我们仍然希望看到所有目标的细节。如果我们让第二个加入一个内部的,我们将失去所有没有助攻的分数。

作为一个查询:建立(创建)两个玩家表副本。别名一为玩家的分数;另一个作为球员助攻。现在就实体关系图(ERD)而言:系统在目标表中将Players.ID_Player作为FK两次不应该有问题;只要两个约束都有不同的名称。我添加了另一个图像。这是正确的方法吗?要使查询正常工作:是。由于Goals有两个FK对玩家的引用,所以玩家表必须列出两次。经验法则是:对表的每个FK(外键)引用都必须有自己对该表的连接。因为目标与玩家有2个FK关系;玩家必须列出两次(使用不同的名称/别名)。因此,当添加其他副本时,Access将自动放置TableName_35;。如果您“查看SQL”,您将看到涉及3个表,并且玩家的别名为玩家。\u 1简短回答“是”;但是你可能想让球员们加入一个外部联盟:包括所有进球记录,只包括球员们的进球记录;如果不是所有的进球都需要助攻,这是真的。嘿,现在我明白了。感谢您的回答和时间。如果这个答案有用:请确保投票和/或将答案标记为正确,以便其他人可以从解释中受益。此外,下次你提问时,如果你通过标记接受的答案来完成过程,人们更有可能花时间回答。如果你想等待接受,看看是否有更好的东西;那也很好;但如果这至少有助于提高投票率的话!