我有两个表 - 我们将调用它们grade
并且test
- 通过第三个表上的键相关的信息,我们将调用它student
。
如果test
包含列student_id
、、test_topic
和test_date
,并且grade
包含列student_id
、、grade
和entered_date
,我希望能够查看grade
表中的记录,并基于student_id
和entered_date
,仅将其与日期最近的记录相关test
联student_id
。
我当前的查询似乎返回与所有以前的测试相关的每个等级,而不仅仅是最近的一个。我不知道如何限制它,以便它显示每个等级仅与输入等级时的最新测试相匹配。
我认为我解释得不是很好,所以我用示例模式、一些测试数据和我当前的查询设置了一个 SQL Fiddle:http: //sqlfiddle.com/#!2/ b5233 /5
ETA:澄清一下:我希望查询报告每次考试的成绩,这是通过输入成绩时最近参加的考试推断出来的。我在这里添加了一个新的变体小提琴:http://sqlfiddle.com/#!2/b5233/43 ,其中包含一个包含测试主题的查询,我认为这使问题更加清晰。对于 'Adam' (student_id = 1),期望的结果是:
STUDENT_ID TEST_DATE TEST_TOPIC GRADE_TIME TEST_GRADE
1 October, 02 2013 23:08:24+0000 Medieval History October, 02 2013 23:08:25+0000 A
1 October, 02 2013 23:08:30+0000 Calculus October, 02 2013 23:08:32+0000 C
1 October, 02 2013 23:08:43+0000 Biochemistry October, 02 2013 23:08:44+0000 A
1 October, 02 2013 23:08:49+0000 Advanced German October, 02 2013 23:08:50+0000 C
但目前你会看到它返回的是成绩表中的每个成绩与之前进行的所有测试相匹配,而不仅仅是最近的。