我的数据库似乎无法正常工作。在我一路上发现的其他事情中(!),我无法将 PAYMENT 表中的考试付款值显示在 EXAM 表中,就像 CLASS 表中的类(class)那样。
这是 Access 中的关系表。
我希望它显示 EXAM 表中的付款,但事实并非如此,并且只显示 PAYMENT 表中此类类(class)的条目,如下所示。
以下是我想要的考试 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还有。
最佳答案
首先让我们看看我们是否在同一页面上。当您选择子数据表时,您似乎希望能够看到考试付款。如果是这样,请转到检查表并切换到设计模式
,然后选择属性表
,然后将子数据表名称
下的字段更改为您想要的表。然后匹配链接子字段
和链接主字段
[考试 ID]
PS。这是向用户呈现数据的理想方式,您应该考虑使用表单来更好地控制。只是一个旁注,即使偏离主题,在表名称或表列标题中包含空格也不是一个好习惯。
关于sql - Access 关系问题导致数据未提取到正确的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24545230/