0

嗨,我有以下表格结构。

Professor (EMP ID,Name,Status,Salary,Age)
Course(Course ID,Course Name,Points)
Works(Course ID,EMP ID,Class ID)

我需要执行以下操作。

返回同一班级'class 10'修过2门不同课程M1和M2的员工名单</p>

这是我写的查询。

SELECT p.EmpID, p.Name, p.Status, p.Salary 
FROM professor p, course c, works w 
WHERE p.EmpID = w.EmpID
AND
w.CourseID = c.CourseID
AND
w.ClassID = 10
AND
c.CourseName IN ( SELECT CourseName FROM course WHERE CourseName = 'm1'
AND CourseName = 'm2')

但是即使数据库中有数据,查询也不返回任何值。

4

2 回答 2

2

这个问题通常被称为Relational Division

SELECT  a.EmpID, a.name
FROM    Professor a
        INNER JOIN Works b
            ON a.EmpID = b.EmpID AND b.ClassID = 10 
        INNER JOIN  Course c
            ON b.CourseID = c.CourseID
WHERE   c.CourseNAME IN ('M1', 'M2')
GROUP   BY a.EmpID, a.name
HAVING  COUNT(DISTINCT c.CourseNAME) = 2
于 2013-03-08T06:12:25.003 回答
1

子查询

( SELECT CourseName FROM course WHERE CourseName = 'm1' AND CourseName = 'm2')

不会返回任何东西。看“和”

于 2013-03-08T06:09:36.503 回答