2016-11-05 87 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);