2

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

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

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

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:

任何提示和帮助都可以。

4

2 回答 2

5

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

select d.department_id, ...
于 2013-03-07T20:20:11.440 回答
3

指定所选字段是 e.department_id 还是 d.department_id (etc)

于 2013-03-07T20:17:36.810 回答