Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询以查找同时也是其他部门员工(非经理)的经理_Mysql_Sql_Database - Fatal编程技术网

MySQL查询以查找同时也是其他部门员工(非经理)的经理

MySQL查询以查找同时也是其他部门员工(非经理)的经理,mysql,sql,database,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) 我在构思需要做什么方面遇到了困难。我正在考虑获取所有managerid的列表,然后以某种方式将IN与针对eid的子查询一起使用,但我不知道如何实现。我们遗漏了一个信

我得到了这个模式:

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

我在构思需要做什么方面遇到了困难。我正在考虑获取所有managerid的列表,然后以某种方式将IN与针对eid的子查询一起使用,但我不知道如何实现。我们遗漏了一个信息:经理是否有工作行?我以为有

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)
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)
我认为用“存在”比用“存在”好

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