Sql 查询-限制教师可以教授的班级数量

Sql 查询-限制教师可以教授的班级数量,sql,Sql,我正在做我的高级项目。在线注册系统和网站的迷你版。在假设中,我们希望将一名教师一学期可以教的班级数量限制在3个 TblEmployee包含:emp_ID键,可以教主题的前4个字母。 TBL课程包含:课程ID键,课程键入主题的前4个字母。 TblClass包含:ClassID键、emp_ID FK、课程ID FK学期时间段 到目前为止,这在选择教授该课程的合适教师方面效果良好: SELECT * FROM tblEmployee, tblCourse WHERE tblEmployee.ca

我正在做我的高级项目。在线注册系统和网站的迷你版。在假设中,我们希望将一名教师一学期可以教的班级数量限制在3个

TblEmployee包含:emp_ID键,可以教主题的前4个字母。 TBL课程包含:课程ID键,课程键入主题的前4个字母。 TblClass包含:ClassID键、emp_ID FK、课程ID FK学期时间段 到目前为止,这在选择教授该课程的合适教师方面效果良好:

SELECT * 
FROM tblEmployee, tblCourse  
WHERE tblEmployee.canTeach = tblCourse.course_Type 
  AND tblClass.course_ID = ?
但是,我想补充一点,如果emp_ID COUNT<3,则从tblClass中包括这些,并排除大于或等于3的,即它们不会显示在下拉列表中

我试过了,但没用

SELECT * 
FROM tblEmployee, tblCourse 
WHERE tblEmployee.canTeach = tblCourse.course_Type 
  AND tblClass.course_ID = ? 
INNER JOIN (SELECT
                tblEmployee.emp_ID, tblClass.emp_ID 
            FROM 
                tblEmployee, tblClass 
            GROUP BY 
                tblClass.emp_ID 
            HAVING 
                count(*) < 3 AND tblClass.emp_ID = tblEmployee.emp_ID) 
  and semester = ?

任何帮助都将不胜感激。

我将从子查询开始,细化它,并使您的语法保持一致

   SELECT
   tblClass.emp_ID 
   FROM 
   tblClass 
   where semester = ?
   GROUP BY
   tblClass.emp_ID 
   HAVING count(tblClass.emp_ID) < 3
据我所知,表中的ID不到教授少于3门课程的教师的3倍

对于外部查询,您需要满足其条件但也在内部集合中的员工。同样,要使语法一致。那就试试看吧

SELECT * 
FROM tblEmployee inner join tblCourse 
on tblEmployee.canTeach = tblCourse.course_Type 
where tblClass.course_ID = ?
and tblEmployee.emp_id 
in 
{
   SELECT
   tblClass.emp_ID 
   FROM 
   tblClass 
   where semester = ?
   GROUP BY
   tblClass.emp_ID 
   HAVING count(tblClass.emp_ID) < 3
}

看看这有什么用。

试着澄清你问题的标题!迈克,你太棒了。谢谢你。它工作得很好。这就是我最终得到的结果:string commandText=SELECT*FROM tblEmployee internal JOIN tblEmployee.canTeach=tblCourse.course\u Type其中tblCourse.course\u ID=?通过tblClass.emp_ID具有counttblClass.emp_ID<3的tblClass.emp_ID从tblClass组中选择tblClass.emp_ID中的tblEmployee.emp_ID;我需要将sem_时间向上移动,可能还需要设置一个会话变量以使其工作,因为现在它未被选中。因此,如果我包括学期,我会得到一个错误。