完全披露这是一个家庭作业问题的一部分,但我尝试了6个不同的版本,我被卡住了。 每次查询运行时,我都在尝试查找1个管理器。我把部门ID和1个名字弹出。目前,我多次获得所有名字。我尝试过使用' ='不能嵌套,联合,交集等。我可以通过基本查询获得经理ID,但我无法获得该名称。当前版本如下所示:
select e.ename
from .emp e
where d.managerid in (select unique d.managerid
from works w, .dept d, emp e1
where d.did=1 and e1.eid=w.eid and d.did=w.did );
我意识到这可能是一个我没有看到的真正基本错误 - 任何想法?
答案 0 :(得分:0)
不清楚你是什么意思随时得到1名男性。它应该是不同的menagers任何时间或相同?
免得抛出你的疑问:
emp
中选择所有empolyes,其中manager_id位于下一个查询数据集dep=1
的所有管理员。其余表和条件不会影响结果数据集。我的did
是表dept
的主键,如果是这样,您的查询可能会被重写为
select e.ename
from emp e
where d.managerid in (select unique d.managerid
from dept d
where d.did=1);
但是此查询会返回给所有员工而不是dept = 1的经理
如果你需要经理你应该得到一名经理人员。如果eid
是员工的主键,而员工表中的managerid
是id
,则需要以下内容:
select e.ename
from emp e
where e1.eid in (select unique d.managerid
from dept d
where d.did=1);