Mysql 用于检索所有教授的SQL查询
表: EMP教授ID、姓名、身份、薪水、年龄 课程ID、课程名称、分数 工作课程ID、EMP ID、班级ID 这是我的db模式,我需要从该模式中获得: 归还所有教授讲授的课程 我写了下面的查询,这显然是错误的,任何人都可以帮助我,因为我是SQL新手Mysql 用于检索所有教授的SQL查询,mysql,sql,Mysql,Sql,表: 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.course
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)
这个问题称为关系划分。根据您的问题,您需要:
…退还所有教授讲授的课程
你的头衔和你想要的正好相反
这个查询会给你
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)
请尝试此查询
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)
我不知道为什么这个答案被否决了。据我所知,我已经阅读了这个问题,并且理解了它:@downvoter,我想知道这有什么问题,这样我可以进一步改进我的答案。+1这是一个很好的问题@JW。我只是想问你为什么让状态保持忙碌,因为就我而言,你总是积极处理堆栈溢出问题,并随时准备帮助他人P@Luv一心多用:事实上这是一种古老的状态。呵呵,它已经完成了。这就是为什么在一些标签上激活的原因20多年前,在ANSI-92 SQL标准中,旧样式的逗号分隔表列表样式被正确的ANSI连接语法所取代,不鼓励使用它