mysql - SQL查询错误

标签 mysql sql database relational-division

您好,我有以下数据库架构

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

我已编写以下查询来返回已教授类(class) M1 或 M2 但不是两者的员工列表

SELECT p.empid,p.name
FROM professor p,course c,works w
WHERE p.empid = w.empid
AND w.courseid = c.courseid
AND ((c.coursename = ‘m1’ AND c.coursename != ‘m2’)
OR
(c.coursename = ‘m2’ AND c.coursename != ‘m1’))

上面的查询正确吗,因为我是 SQL 新手,请帮忙

最佳答案

这个问题通常被称为关系划分。下面的查询的作用是获取教授 m1m2 等类(class)的所有教授的姓名。过滤掉教授后,它会计算不同的 CourseName 的数量。显然,如果只教授一门类(class),它将返回 1 :D

SELECT  a.EmpID, a.Name
FROM    Professor a
        INNER JOIN Works b
            ON a.EmpID = b.EmpID
        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) = 1

关于mysql - SQL查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15332145/

相关文章:

javascript - 输出总是给出 []

php - 将 PDO::ATTR_EMULATE_PREPARES 更改为 FALSE 并得到 "Invalid parameter number"错误

php - 如何在函数内部建立一个mysql连接

sql - 从另一行复制值

python - web.py db.insert函数抛出错误: <type 'exceptions.TypeError' > : 'long' object is unsubscriptable

php - SQL 打印出行两次?

database - 如何为 Web 应用程序 GUI 测试分离数据库依赖性

mysql - 将 MySQL 中的忽略 NULL 值的行聚合到单行中

php - PHP 中外键的 MySQL INSERT 问题

sql - Hive 中 SQL Server UPDATE 命令的最佳等价物