столбец неоднозначно определил ошибку в жабе для оракула - PullRequest
0 голосов
/ 05 октября 2018

Я работаю в жабе для оракула и написал этот 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

1 Ответ

0 голосов
/ 05 октября 2018

Вы дважды использовали таблицу 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
...