所以我坚持这个问题说:
编写一个查询,按字母顺序检索所有部门的列表,其中包含DEPARTMENT_ID,DEPARTMENT_NAME,LAST_NAME,FIRST_NAME列,其中last_name和first_name是部门经理的姓名,只要有一个。
我有人力资源数据库使用部门,员工表到目前为止我写的是:
select department_id, department_name, e.last_name, e.first_name
from departments d, employees e
where e.department_id=d.department_id
and d.department_id=e.department_id
and d.manager_id=e.manager_id
having department_name = '%Manager%';
但我无法弄清楚,任何提示都会有所帮助!
答案 0 :(得分:1)
a having子句与group by有关。如果没有分组,则没有任何含义。
您只需要您的加入即可获得经理的员工表中的记录。
select department_id, department_name, e.last_name, e.first_name
from departments d, employees e
where d.manager_id=e.id
最好使用较新的连接语法
select dept.department_id, dept.department_name, emp.last_name, emp.first_name
from departments dept
inner join employees emp on dept.manager_id = emp.id
你不需要e.department_id = d.department_id和d.department_id = e.department_id的条件,(一方面这些是多余的,所以你只需要一个,如果需要的话)因为employees.department_id field是指员工所在的部门,您想要的是部门的经理员工记录。部门的经理员工记录表示为员工表主键的外键。
答案 1 :(得分:0)
这可能对你有帮助......
`select e.first_name,e.last_name,d.department_id ,d.department_name from employees e,departmets d where d.manager_id=e.employee_id order by d.department_name;`