【发布时间】:2020-11-16 00:30:16
【问题描述】:
我有 3 个表 Employee、Project 和 Workson,示例数据是:
员工:
SocialSecurityNo Department_No
121212 1
456789 2
666666 2
444444 2
沃森
ESSn Projectno
121212 5000
456789 1000
456789 2000
666666 1000
666666 2000
666666 3000
666666 4000
666666 5000
666666 6000
项目:
ProjectNumber Dnum
1000 5
2000 5
3000 5
4000 4
5000 1
6000 4
我必须检查是否为 Dno y 选择了具有 SocialSecurityNo x 的员工,但他正在从事分配给部门 z 的项目。
我已经为它写了一个查询,我的查询正在查找所有正在为部门 x 工作的 SSn 并为部门 x 工作,我试图做相反的事情,但是当我申请 NOT IN 时子查询,那么它也会给我那些在 workson 表中没有数据的社会安全号码
以下是我的查询:
Select E.SocialSecurityNo FROM EMPLOYEE E WHERE E.SocialSecurityNo NOT IN
(Select E.SocialSecurityNo From
EMPLOYEE E Join WORKSON W ON E.SocialSecurityNo=W.ESSn
Join PROJECT P ON E.Department_No=P.Dnum
Where W.ProjectNumber=P.Projectno);
【问题讨论】: