我有以下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
这是我到目前为止所做的,但我不确定如何获得该课程的名称。
答案 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