按连接查询分组

时间:2015-11-14 00:33:06

标签: sql

我有以下3个表格。

学生( snum :整数,sname:string,major:string,level:string,age:integer)。

班级(名称:字符串,meet_at:时间,房间:字符串)

已注册( snum :整数, cname :字符串)

我想获得学生注册的课程数量以及学生注册的最早班级的名称。如何在单个SQL查询中执行此操作?

SELECT S.sname, COUNT(*), MIN(C.meets_at)
FROM Student S, Class C, Enrolled E
WHERE S.snum=E.snum and C.name=E.cname 
GROUP BY S.snum

这是我到目前为止所做的,但我不确定如何获得该课程的名称。

1 个答案:

答案 0 :(得分:0)

注册了snum 1的学生的课程数量:

select count(*) from enrolled where snum = 1;

snum 1学生最早的课程(SQL有点特定于数据库 - a ;;后端不使用相同的功能和/或采用结果集。即:使用MS SQL服务器)

select top 1 cname from enrolled e 
  inner join class c on c.name = e.cname
  where e.snum = 1 and c.meets_at >= cast(getdate() as time)
  order by meets_at