问题: 人力资源部门需要一个提示用户提供员工的查询 姓。然后查询显示任何员工的姓氏和雇用日期 与他们提供名称的员工(不包括该员工)在同一部门。 例如,如果用户输入Zlotkey,请查找所有使用的员工 Zlotkey(不包括Zlotkey)。
到目前为止我设法做到了这一点,但我不知道如何完成它。现在,它在我写完last_name之后向我展示了所有员工。有什么建议请继续吗?
SELECT last_name, TO_CHAR(hire_date,'DD-MON-YYYY') AS "HIRE_DATE"
FROM employees
WHERE last_name <>ALL (SELECT '&last_name'
FROM employees)
AND department_id IN (SELECT department_id
???....
P.S:这个问题来自Oracle教程(Oracle Database 11g:SQL Fundamentals 1 of 1(2009年),Practice 7,练习1适用于已经完成此操作的人:)。
答案 0 :(得分:1)
这样的东西?
SELECT last_name, TO_CHAR(hire_date,'DD-MON-YYYY') AS "HIRE_DATE"
FROM employees a
JOIN (Select department_id from employees where last_name = :surname) b on a.department_id = b.department_id
and last_name <> :surname
修改强> 这种解决方案的唯一问题是,如果在不同的部门中有两个姓氏相同的人,那么将雇员号码作为过滤器而不是姓氏使用可能会有用。
答案 1 :(得分:0)
SELECT LAST_NAME, HIRE_DATE
FROM EMPLOYEES
WHERE DEPARTMENT_ID= (SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE LAST_NAME LIKE '&NAME')
AND LAST_NAME <> '&NAME';