“各列定义不明”

时间:2013-03-07 20:13:22

标签: sql oracle11g

所以我这个学期很难理解SQL。我对SQL中的知识真的没有信心,而且我正在尝试这个练习,它说:

一个SELECT语句,用于检索列为DEPARTMENT_ID , DEPARTMENT_NAME , FULL_NAME, JOB_TITLE的员工列表,其中FULL_NAME是名字和姓氏,并且他们的职位名称中包含单词“Sales”的员工之间的空格连接起来。该列表必须按职称和部门名称排序。

到目前为止,我想出了这个

SELECT department_id, 
    department_name, 
    first_name || ' ' || last_name as Full_name, 
    job_title
FROM departments d, employees e, jobs j
WHERE d.department_id=e.department_id 
HAVING job_title LIKE '%Sales%';

错误说:

Error starting at line 1 in command:
select department_id, department_name, first_name || ' ' || last_name as Full_name, job_title
from departments d, employees e, jobs j
where d.department_id=e.department_id 
having job_title like '%Sales%'
Error at Command Line:1 Column:8
Error report:
SQL Error: ORA-00918: column ambiguously defined
00918. 00000 -  "column ambiguously defined"
*Cause:    
*Action:

任何提示和帮助都可以。

2 个答案:

答案 0 :(得分:5)

命令中的“第8列”是第8个字符department_id字段。您从两个具有该列的表中选择列department_id;这是不明确的,因为解析器看到department_id的两个可能值(departments中的一个和employees中的一个),,即使我们根据您的WHERE子句知道这些值将是相同的。你必须选择一个:

select d.department_id, ...

答案 1 :(得分:3)

指定所选字段的e.department_id或d.department_id(等)