部门 X 人被部门 Y 人控制
Department X person is controlled by Department Y person
我有 3 table 名员工、项目和工作人员,示例数据为:
员工:
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 的项目。
我已经为它写了一个查询,我的查询正在工作,发现所有正在工作的 SSn 都为部门 x 选择并为部门 x 工作,我试图做相反的事情,但是当我申请时 NOT IN
在子查询上然后它还会给我那些在 workson table
中没有数据的社会保险号码
下面是我的查询:
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);
这是你想要的吗?
select e.*, p.*
from employee e
inner join workson w on w.essn = e.socialsecurityno
inner join project p on p.projectnumber = w.projectno
where p.dnum <> e.department_no
这会带来所有 employee/project 对,其中员工的部门与项目的部门不匹配。
旁注:我建议调整 table 中的列名称,这样架构更容易理解。社会安全号码在一个 table 中被称为 essn
而在另一个中被称为 socialsecurityno
是没有道理的; projectnumber
vs projectno
和 dnum
vs department_no
.
也是如此
我有 3 table 名员工、项目和工作人员,示例数据为:
员工:
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 的项目。
我已经为它写了一个查询,我的查询正在工作,发现所有正在工作的 SSn 都为部门 x 选择并为部门 x 工作,我试图做相反的事情,但是当我申请时 NOT IN
在子查询上然后它还会给我那些在 workson table
下面是我的查询:
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);
这是你想要的吗?
select e.*, p.*
from employee e
inner join workson w on w.essn = e.socialsecurityno
inner join project p on p.projectnumber = w.projectno
where p.dnum <> e.department_no
这会带来所有 employee/project 对,其中员工的部门与项目的部门不匹配。
旁注:我建议调整 table 中的列名称,这样架构更容易理解。社会安全号码在一个 table 中被称为 essn
而在另一个中被称为 socialsecurityno
是没有道理的; projectnumber
vs projectno
和 dnum
vs department_no
.