2

テーブル:

  • 教授(EMP ID、名前、ステータス、給与、年齢)
  • コース(コースID、コース名、ポイント)
  • 作品(コースID、EMP ID、クラスID)

これは私のdbスキーマであり、そのスキーマから取得する必要があります。

すべての教授によって教えられたそれらのコースを返します。

私は明らかに間違っている次のクエリを書きましたが、SQLを初めて使用するので、誰か助けてください。

SELECT 
    c.coursename
FROM  
    professor p, works w, course c
WHERE 
    p.empid = w.empid
    AND w.courseid = c.courseid
    AND p.empid IN (SELECT all(empid) FROM professors)
4

2 に答える 2

3

この問題はと呼ばれRelational Divisionます。あなたが望むあなたの質問から:

" ..すべての教授によって教えられたそれらのコースを返します。. "

あなたのタイトルはあなたが望むものとは正反対です。

このクエリはあなたに与えるでしょう、

SELECT  a.CourseID, a.Course
FROM    Course a
        INNER JOIN Works b
            ON a.CourseID = b.CourseID
        INNER JOIN Professor c
            ON b.EmpID = c.EmpID
GROUP   BY a.CourseID, a.Course
HAVING  COUNT(DISTINCT c.EmpID) = (SELECT COUNT(*) FROM Professor)
于 2013-03-18T05:58:21.390 に答える
0

このクエリを試してください

SELECT 
    courseName 
FROM 
    Course c
WHERE 
    NOT EXISTS (SELECT 
       EMP_ID 
    FROM 
       Professor p, 
       works w 
    WHERE 
       c.CourseID = w.CourseID AND 
       p.EMP_ID <> w.EMP_ID)
于 2013-03-18T06:05:45.670 に答える