2

表:

  • 教授(EMP ID、姓名、身份、薪水、年龄)
  • 课程(课程 ID、课程名称、分数)
  • 作品(课程 ID、EMP ID、班级 ID)

这是我的数据库架构,我需要从该架构中获取:

归还所有教授教授过的课程。

我写了以下查询,这显然是错误的,任何人都可以帮助我,因为我是 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 回答