mysql - 如何反转或过滤掉在其他部门从事项目的两名员工?
问题描述
所以现在我很接近但现在返回的结果表只显示我不想看到的员工,我想显示只在他们部门内的项目上工作的员工。
我已将三个表连接在一起并尝试使用 NOT IN 运算符,但我似乎无法正确使用它?
这是我的代码
SELECT e.FNAME,
e.LNAME
FROM ballen15db.EMPLOYEE e,
ballen15db.WORKS_ON w
WHERE e.SSN=w.ESSN
AND EXISTS
(SELECT *
FROM ballen15db.PROJECT p
WHERE w.PNO=p.PNUMBER
AND p.DNUM!=e.DNO )
GROUP BY e.SSN;
预期成绩
John Smith
Joyce English
Ramesh Rayan
Alicia Zelaya
Ahmad Jabbar
James Borg
实际结果
Franklin Wong
Jennifer Wallace
解决方案
首先,学习使用正确的JOIN
语法。然后使用GROUP BY
andHAVING
为您的逻辑:
select e.SSN, e.FNAME, e.LNAME
from ballen15db.EMPLOYEE e join
ballen15db.WORKS_ON w
on e.SSN = w.ESSN join
ballen15db.PROJECT p
on w.PNO = p.PNUMBER
group by e.SSN, e.FNAME, e.LNAME
having sum(p.dum <> e.dno) = 0;
having
计算部门编号不同的次数。= 0
说不存在这样的行。
推荐阅读
- java - 从嵌套列表中获取最大值并使用流转换为一个列表
- go - gorilla/mux 中的 Context.WithTimeout() 和 os.exit
- ruby-on-rails-4 - 将 rails 4 升级到 rails 6 - 直接还是逐步升级?
- python - 如何在 shell 脚本中转发命令行参数?
- symfony - Symfony - 多对一关系中的循环引用错误
- c# - CREATE UNIQUE INDEX 语句因发现重复键而终止 EF
- python - 评估没有运算顺序的数学问题(Python)
- jsp - WEB-INF 中的 JSP 文件出现错误 404,但没有任何消息
- regex - linux grep -oP 如何仅打印模式
- pandas - 与grouby一起旋转?