访问关系问题,数据未被拉到正确的表

时间:2014-07-03 04:56:11

标签: sql database ms-access ms-access-2013

我的数据库似乎无法正常工作。除了我在路上发现的其他事情(!)之外,我无法在PAYMENT表中获得考试的付款值,以便像在CLASS表中的类一样显示在EXAM表中。

以下是Access中的关系表。

我希望它在EXAM表中显示付款,但它不是,并且只显示PAYMENT表中类似这里的类的条目。

以下是我希望考试的PAYMENT表中的值

我无法从Access获取实际数据库的完整SQL,因为它不允许它,但我可以通过对所有表进行查询来获取一些SQL,但要注意我无法编程对数据库的任何建议,只有我可以在视觉关系屏幕中更改关系和连接类型:pastebin.com/RS6tT8C3

SELECT 
FROM (Parent INNER JOIN Student ON Parent.[Parent ID] = Student.[Parent ID]) INNER JOIN (([Exam Type] LEFT JOIN (Exam INNER JOIN [Exam Results] ON Exam.[Exam ID] = [Exam Results].[Exam ID]) ON [Exam Type].[Exam Type ID] = Exam.[Exam Type ID]) RIGHT JOIN (([Class Type] LEFT JOIN (Class INNER JOIN Attendance ON Class.[Class ID] = Attendance.[Class ID]) ON [Class Type].[Class Type ID] = Class.[Class Type ID]) RIGHT JOIN Payment ON Class.[Class ID] = Payment.[Class ID]) ON Exam.[Exam ID] = Payment.[Exam ID]) ON (Student.[Student ID] = Payment.[Student ID]) AND (Student.[Student ID] = [Exam Results].[Student ID]) AND (Student.[Student ID] = Attendance.[Student ID]);

一位非常有帮助的数据库管理员昨天在IRC上向我建议我应该这样做:

payments left join exams on examid = examid left join classes classid = classid

我认为我可以通过更改关系选项卡中的连接类型选项来实现,但它似乎无法正常工作。我刚刚完成了1个没有SQL编程的数据库模块,所以它是一个陡峭的学习曲线!

它已经到了一个阶段,一切看起来都太复杂了,我已经失去了对事物的追踪大声笑如果有人能在接下来的几个小时内给我任何建议,因为我今天有任务交给那么非常感谢。谢谢!

**我也会包括full database file

1 个答案:

答案 0 :(得分:2)

首先让我们看看我们是否在同一页面上。当您选择子数据表时,它看起来好像您希望能够看到考试付款。如果是,请转到考试表并切换到Design Mode,然后选择Property Sheet然后将Subdatasheet Name下的字段更改为您想要的表格。然后匹配[Exam ID]Link Child Filds

下的Link Master Fields

enter image description here

PS。这是向用户提供数据的理想方式,您应该考虑使用表单来实现更好的控制。只是旁注,即使不在主题上,在表名或表列标题中包含空格也不是一个好习惯。