所以我有一个日期表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和雇用日期。有人可以帮忙吗?
答案 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');
另外,事实证明我并不需要显示雇用日期。