我有2张桌子。 表1姓名'学生'有如下列
rowindex roll_no name
1 111 Peter
2 112 John
表2名称' exam_dates'有如下列
rowindex roll_no subject date
1 111 Maths 2018-06-20
2 111 English 2018-06-21
3 112 Maths 2018-06-19
4 112 History 2018-06-22
查询条件如下: -
Condition 1. Each student's Last exam date in 1 table by using those two tables.
&安培;
Condition 2. If Exam date is less than today's date, then it should not come into the list.
我希望得到结果
1. Roll_no 111 have Maths at 2018-06-20
2. Roll_no 112 have History at 2018-06-22
为了得到这个结果,我必须写什么查询? 我尝试了如下查询: -
SELECT a.roll_no, a.name,b.subject, b.date
FROM test_db.student a, test_db.exam_dates b
Where a.roll_no = b.roll_no and (SELECT MAX(date) FROM exam_dates)
group by a.roll_no
order by a.roll_no, a.name,b.subject;
但没有成功。需要帮助。
答案 0 :(得分:3)
条件2.如果考试日期小于今天的日期,则不应该进入列表。
这是WHERE
条件。
条件1.每位学生使用这两张表在1个表格中的最后一次考试日期。
每名学生MAX(date)
。
您也希望显示主题,以便您首先获得每个学生的最长日期,然后再次查询exam_dates
表:
select s.roll_no, s.name, ed.subject, ed.date
from student s
join exam_dates ed on ed.roll_no = s.roll_no
where (ed.roll_no, ed.date) in
(
select roll_no, max(date)
from exam_dates
where date >= current_date
group by roll_no
);