用于获取两个表数据组合的查询

kninwzqo  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(252)

我有两张table。表1名称“student”有如下列

rowindex   roll_no  name
1          111      Peter
2          112      John

表2“考试日期”有如下列

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

查询条件为follows:-

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

为了得到这个结果,我要写什么查询?我试着询问follows:-

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;

但没有成功。我需要帮助。

oxcyiej7

oxcyiej71#

条件2。如果考试日期小于今天的日期,则不应列入名单。
这是一个 WHERE 条件。
条件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
);

相关问题