1

有两张表:

课程(CourseNo、SectionNo、Year、Semester、Capacity)(粗体表示键)。

招生(课程编号、年份、学期、学段编号、学生编号、年级)

我将如何使用 SQL 来确保每个班级的注册人数少于班级容量?

我知道如何单独完成这些部分,但是每个班级注册的学生的 count() 与该班级的容量之间的比较是我迷失的地方。我不知道如何确保它与正确的值进行比较。

谢谢

编辑:我正在使用 SQL Server 2008 创建此断言,但我想知道除了在 SQL Server 中创建触发器(因为它不支持断言)之外,如何执行常规 SQL

4

2 回答 2

0
select courseno, capacity, count(*) as enrollments
from classes c 
join enrollments e on e.courseno = c.courseno
group by c.courseno , capacity
于 2012-11-15T03:03:37.457 回答
0
select c.CourseNo, c.SectionNo, c.[Year], c.Semester, Capacity, count(*) as Enrolled
from classes as c 
 join enrollments as e
  on c.CourseNo = e.CourseNo
   and c.SectionNo = e.SectionNo
   and c.[Year] = e.[Year]
   and c.Semester = e.Semester
 group by c.CourseNo, c.SectionNo, c.[Year], c.Semester, Capacity
 having count(StudentNo) > Capacity
于 2012-11-15T09:05:27.753 回答