0

こんにちは私は次のテーブル構造を持っています。

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

私は次のことをする必要があります。

同じクラス「クラス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')

何も返しません。「AND」を見てください。

于 2013-03-08T06:09:36.503 に答える