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

时间:2018-06-08 11:48:38

标签: mysql sql

我有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;

但没有成功。需要帮助。

1 个答案:

答案 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
);