找到表sql练习中的链接

时间:2013-03-10 20:57:48

标签: sql oracle11g

所以我坚持这个问题说:

编写一个查询,按字母顺序检索所有部门的列表,其中包含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%';

但我无法弄清楚,任何提示都会有所帮助!

2 个答案:

答案 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;`