【问题标题】:column ambiguosly defined error in toad for oracletoad for oracle 中的列模糊定义错误
【发布时间】:2018-10-05 14:14:59
【问题描述】:

我在 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

【问题讨论】:

    标签: sql oracle toad


    【解决方案1】:

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

     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
    

    【讨论】:

    • Wrobel 谢谢你,是的,使用部门 2 次是一个错误
    • JacekWrobel 你能帮我确定日期吗,因为在它之间使用它会排除 16/08/2002 日期并从下一个日期开始,但我希望结果从 16/08/2002 到 07/包括 12/2007 两个日期
    • @zainulabidin BETWEEN BETWEEN BETWEEN BETWEEN BETWEEN V1 AND V2 等条件可以转换为 COL1 >= V1 AND COL1
    • 好的,我会尝试看看我是否从查询中得到了完美的结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多