用于 Oracle 的 Toad 中的列含糊不清地定义错误

column ambiguosly defined error in toad for oracle

我正在使用 toad for oracle 并编写了这个 SQL 查询,但它给出了一个 错误:

[错误] 执行 (65:3):ORA-00918:列定义不明确

下面是我的 SQL 查询,我尝试使用别名来区分列。

 select HR.EMPLOYEES.FIRST_NAME||' '||HR.EMPLOYEES.LAST_NAME AS 
 Full_Name,HR.EMPLOYEES.SALARY as sal,HR.EMPLOYEES.JOB_ID as ji,
 HR.EMPLOYEES.COMMISSION_PCT as cmpct,HR.EMPLOYEES.MANAGER_ID as 
 mgid,HR.EMPLOYEES.DEPARTMENT_ID as dep,HR.DW_COUNTRIES.C_ID as 
 country,HR.DW_REGION.R_ID as region,
 HR.LOCATIONS.LOCATION_ID as loc
 from HR.EMPLOYEES
 join HR.DEPARTMENTS ON 
 HR.EMPLOYEES.DEPARTMENT_ID=HR.DEPARTMENTS.DEPARTMENT_ID
join HR.DEPARTMENTS ON HR.DEPARTMENTS.LOCATION_ID=HR.LOCATIONS.LOCATION_ID
join HR.LOCATIONS   ON HR.LOCATIONS.COUNTRY_ID=HR.DW_COUNTRIES.C_ID
join HR.DW_COUNTRIES ON HR.DW_COUNTRIES.R_ID=HR.DW_REGION.R_ID
where HR.DW_COUNTRIES.C_ID='US'
AND HR.EMPLOYEES.HIRE_DATE BETWEEN TO_DATE('16/08/2002','DD/MM/YYYY') AND 
TO_DATE('07/12/2007','DD/MM/YYYY')
AND HR.DW_REGION.R_ID=2
AND HR.LOCATIONS.LOCATION_ID=1700
AND HR.EMPLOYEES.DEPARTMENT_ID=90

您在查询中使用了 table HR.DEPARTMENTS 两次,这就是问题的根源。你确定你必须加入这个 table 两次吗?您还有一些不清楚的连接。我修复了它们,但没有测试查询。

 select HR.EMPLOYEES.FIRST_NAME||' '||HR.EMPLOYEES.LAST_NAME AS 
 Full_Name,HR.EMPLOYEES.SALARY as sal,HR.EMPLOYEES.JOB_ID as ji,
 HR.EMPLOYEES.COMMISSION_PCT as cmpct,HR.EMPLOYEES.MANAGER_ID as 
 mgid,HR.EMPLOYEES.DEPARTMENT_ID as dep,HR.DW_COUNTRIES.C_ID as 
 country,HR.DW_REGION.R_ID as region,
 HR.LOCATIONS.LOCATION_ID as loc
 from HR.EMPLOYEES
 join HR.DEPARTMENTS ON 
 HR.EMPLOYEES.DEPARTMENT_ID=HR.DEPARTMENTS.DEPARTMENT_ID
join HR.LOCATIONS    ON HR.DEPARTMENTS.LOCATION_ID=HR.LOCATIONS.LOCATION_ID
join HR.DW_COUNTRIES ON HR.LOCATIONS.COUNTRY_ID=HR.DW_COUNTRIES.C_ID
join HR.DW_REGION    ON HR.DW_COUNTRIES.R_ID=HR.DW_REGION.R_ID
where HR.DW_COUNTRIES.C_ID='US'
AND HR.EMPLOYEES.HIRE_DATE BETWEEN TO_DATE('16/08/2002','DD/MM/YYYY') AND 
TO_DATE('07/12/2007','DD/MM/YYYY')
AND HR.DW_REGION.R_ID=2
AND HR.LOCATIONS.LOCATION_ID=1700
AND HR.EMPLOYEES.DEPARTMENT_ID=90