提取与价值相关的数据,但不包括价值本身

时间:2016-11-20 22:02:52

标签: sql oracle oracle-sqldeveloper

所以我有一个日期表Employees,我想写一个查询,提示用户一个员工的姓氏。然后,查询显示与用户名称(不包括该员工)的员工在同一部门中的任何员工的姓氏和雇用日期。例如,如果我输入Smith,查询将查找所有与Smith合作的员工,但不包括Smith本人。

到目前为止我写的代码是:

    select e.employee_id, e.last_name, e.department_id, e.hire_date 
    from employees e
    where e.department_id = (select department_id
                             from employees
                             where last_name = initcap('&l_name'))
    and e.last_name <> initcap('&l_name');

但是,当我运行它时,此代码不会提示我输入任何姓氏,它会自动显示单个姓氏,员工ID,部门ID和雇用日期。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

在Oracle中您可以使用减号(从第一个结果集中减去第二个选择的结果集)

    select e.employee_id, e.last_name, e.department_id, e.hire_date 
    from employees e
    where e.department_id = (select department_id
                             from employees
                             where last_name = initcap('&l_name'))
    minus 
    select e.employee_id, e.last_name, e.department_id, e.hire_date 
    from employees 
    where last_name = initcap('&l_name')

答案 1 :(得分:0)

好的,经过几次,我解决了它:

 select e.employee_id, e.last_name, e.department_id
 from employees e
 where e.department_id = (select department_id 
                           from employees 
                           where last_name = initcap('&l_name'))
 and e.last_name <> initcap('&l_name');

另外,事实证明我并不需要显示雇用日期。