Oracle sql查询返回所有值而不是限制值

时间:2016-11-05 16:19:31

标签: oracle

完全披露这是一个家庭作业问题的一部分,但我尝试了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 );

我意识到这可能是一个我没有看到的真正基本错误 - 任何想法?

1 个答案:

答案 0 :(得分:0)

不清楚你是什么意思随时得到1名男性。它应该是不同的menagers任何时间或相同?

免得抛出你的疑问:

  1. 从表emp中选择所有empolyes,其中manager_id位于下一个查询数据集
  2. 您将获得dep=1的所有管理员。其余表和条件不会影响结果数据集。
  3. 我的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是员工的主键,而员工表中的manageridid,则需要以下内容:

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