Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于检索所有教授的SQL查询_Mysql_Sql - Fatal编程技术网

Mysql 用于检索所有教授的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

表:

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)
这个问题称为关系划分。根据您的问题,您需要:

…退还所有教授讲授的课程

你的头衔和你想要的正好相反

这个查询会给你

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连接语法所取代,不鼓励使用它