MySQL查询以查找在(其他)部门中也是员工(而非经理)的经理

时间:2013-03-14 23:02:57

标签: mysql sql database

我给出了这个架构:

Emp(eid: integer,ename: string,age: integer,salary: real)
Works(eid:integer,did: integer,pct_time: integer)
Dept(did:integer,budget: real,managerid:integer)

我无法概念化需要完成的工作。我正在考虑获取所有经理人的列表,然后以某种方式使用IN和子查询来反对eid,但我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:0)

select Works.eid 
from Works inner join Dept using (did)
where Works.eid != Dept.managerid 
  and Works.eid in (select managerid as eid from Dept)

答案 1 :(得分:0)

我们错过了一个信息:管理员是否有一个工作行?我以为有。

Select d1.managerid
From Dept as d1
Where Exists 
(Select 1 from Works 
 Join Dept as d2 using (did)
 Where Works.eid = d1.managerid 
 And Works.eid != d2.managerid)

我认为使用“exists”比使用“in”更好。

如果您需要返回管理器的完整信息,则需要在主查询中添加连接Emp。