我有两个表 - 我们将其称为grade
和test
- 通过第三个表上的关键字相关的信息,我们将其称为student
。在MySQL中根据日期选择记录
如果test
包含test_topic
列student_id
,和test_date
和grade
包含列student_id
,grade
和entered_date
,我希望能够看到一个记录在grade
表的基础上,student_id
和entered_date
,副教授它仅与test
中的记录相同,其日期最近为student_id
。
我目前的查询似乎会返回与所有以前的测试相关的每个年级,而不仅仅是最近的一次。我无法弄清楚如何限制它,以便显示每个等级只与进入等级时最近的测试相匹配。
我不认为我已经解释了这个非常好,所以我给自己定了一个SQL拨弄示例模式,一些测试数据,以及我的当前查询的位置:http://sqlfiddle.com/#!2/b5233/5
ETA:澄清:我希望查询报告的等级为,每个测试都是通过最近进入等级时进行的测试推导的。我在这里添加了一个新的变体小提琴:http://sqlfiddle.com/#!2/b5233/43,其中包含测试主题,我认为这个问题会让问题更清楚一些。对于“亚当”(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
,但目前你会看到什么还给是打击匹配等级表中的每个年级之前,与其采取一切测试只有最近的。
你试过GROUP BY student_id吗? – Gustavo
我有,但我承认我无法理解GROUP BY的工作原理。最终,它似乎只为给定的学生返回一个记录,而不是为每次测试返回一个记录。 – Valentine
你是否试图通过考试,每个学生(或一名学生,因为你已经限制了小提琴)获得所有最新成绩? – leon