2016-11-05 117 views
-1

完全披露这是一个作业问题的一部分,但我试过6个不同的版本,我卡住了。 每次查询运行时,我都试图找到1管理器。即,我把部门ID和1个名字弹出。目前,我得到所有的名字,多次。我尝试过一个'='的嵌套,而不是嵌套,联合,交集等。我可以用一个基本的查询来获得经理ID,但我不能得到名字。目前的版本是这样的:Oracle SQL查询返回所有的值,而不是限制值

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

它不清楚你的意思是什么意思让任何时间1 menager。任何时候都应该是不同的经纪人吗?

免得去把你的查询:

  1. 您选择从表emp所有empolyes其中MANAGER_ID在一个查询的数据集
  2. 你得到所有经理dep=1。其余表格和条件不影响结果数据集。

我theing did是从部门= 1 ,如果你对表dept主键,如果是您的查询可能被改写为

select e.ename 
from emp e 
where d.managerid in (select unique d.managerid 
         from dept d 
         where d.did=1); 

但此查询返回你所有emploees,而不是经理需要一名经理。你应该找到一个经理人员。如果eid是员工的主键,managerid是员工表中的id,则需要类似如下内容:

select e.ename 
from emp e 
where e1.eid in (select unique d.managerid 
         from dept d 
         where d.did=1);