【问题标题】:Query - limit the number of classes a teacher can teach查询 - 限制老师可以教的课程数量
【发布时间】:2013-05-27 18:26:48
【问题描述】:

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

  • TblEmployee 包含:emp_ID(键)、can_Teach(主题的前 4 个字母)。
  • TblCourse 包含:course_ID(键)、course_Type(主题的前 4 个字母)。
  • TblClass 包含:ClassID (Key), emp_ID (FK), course_ID (FK) 学期(时间段)

到目前为止,这可以很好地选择合适的老师来教授该课程:

SELECT * 
FROM tblEmployee, tblCourse  
WHERE tblEmployee.canTeach = tblCourse.course_Type 
  AND tblClass.course_ID = ?

但是我想从tblClass 中添加,如果emp_ID (COUNT)

我试过了,但是没有用。

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 = ?

任何帮助将不胜感激。

【问题讨论】:

  • 试着澄清你的问题的标题!

标签: sql


【解决方案1】:

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

   SELECT
   tblClass.emp_ID 
   FROM 
   tblClass 
   where semester = ?
   GROUP BY
   tblClass.emp_ID 
   HAVING count(tblClass.emp_ID) < 3

据我了解,即表中出现次数少于 3 次的 ID(教授少于 3 门课程的教师)。

对于您的外部查询,您需要满足其条件但也在内部集合中的员工。再次,使您的语法一致。然后试试 IN。

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 INNER JOIN tblCourse on tblEmployee.canTeach = tblCourse.course_Type where tblCourse.course_ID = ? and tblEmployee.emp_ID in (SELECT tblClass.emp_ID FROM tblClass GROUP BY tblClass.emp_ID有计数(tblClass.emp_ID)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 2020-02-19
相关资源
最近更新 更多