【发布时间】:2019-03-05 11:51:10
【问题描述】:
我来了
ORA-00904: "E"."MANAGER_ID": 无效标识符 00904. 00000 - “%s:无效标识符” *原因:
*行动: 线性错误:323,列:77
使用以下代码。位置 323 列 77 指的是这段代码中的位置 5 列 6
select concat (concat(concat('Id: ',e.employee_id),
concat ('',e.first_name)),concat('. ',e.last_name)) as "Employee info",
job_title, salary, department_name,
(select first_name from employees
where e.manager_id=employee_id) as "Manager name"
from employees e
natural join jobs natural join departments;
如果我做“孤立”的查询,如:
select e.first_name as "Worker name", nvl((select first_name from employees where e.manager_id=employee_id),'Sin manager') as "Manager name"
from employees e
order by e.employee_id;
不知道有没有关系,不过数据库是oracle自带的hr数据库
编辑:除了答案之外,我达到的另一种可能性如下
select concat (concat(concat('Id: ',e.employee_id),
concat (' ',e.first_name)),
concat('. ',e.last_name)) as "Employee info",
job_title, e.salary, department_name, m.first_name, m.employee_id
from employees e join jobs j
on (e.job_id = j.job_id)
join departments d
on (e.department_id = d.department_id)
join employees m
on (e.manager_id=m.employee_id)
order by e.employee_id;
唯一的问题是没有显示没有分配经理的员工。
【问题讨论】:
-
忘掉那个 NATURAL JOIN 结构吧。始终指定 JOIN 列!