2016-06-15 1 views
0

私はこのクエリを持っているし、常にタイトルにエラーを取得して管理者の部署名を照会するために:ERROR:ORA-00918:列あいまいに定義された

select e.employee_id e_id 
     , e.first_name || ' ' || e.last_name employee_name 
     , e.job_id 
     , e.department_id 
     , e.department_name 
     , e.salary || ' $ ' 
     , to_char(e.hire_date , ' day- dd - mon -yyyy') employee_hire_date 
     , m.employee_id m_id 
     , m.first_name || ' ' || m.last_name manager_name 
     , m.job_id 
     , m.department_id 
     , m.department_name 
     , m.salary 
FROM employees e 
JOIN employees m 
    on m.employee_id = e.manager_id 
JOIN departments d 
    on d.department_id = e.department_id 
JOIN departments d 
    on d.department_id = m.department_id 
+0

あなたは同じエイリアスで2回参加していますが、別名を別名にする必要があります... DE、(DepartmentEmployee)(DM)Department Manager。 department_nameに正しいエイリアスを使用するように選択内容を更新する – xQbert

+0

コピー/ペーストエラー?部門テーブルに2回参加しています(同じエイリアスでも:-))。 – Chains

+0

しかし、Dはどこでも使用されていません...なぜ私の推測はdepartment_Nameであり、おそらくIDはデュアルジョインから出てくるはずです(異なるエイリアスが必要です) – xQbert

答えて

1

問題はここに産む:

JOIN departments d 
    on d.department_id = e.department_id 
JOIN departments d 
    on d.department_id = m.department_id 

これらのテーブルの中から何も選択していないので、どちらか一方を削除するか、すべてemployeeテーブルに存在するか、別名でエイリアスします。

JOIN departments d 
    on d.department_id = e.department_id 
JOIN departments dd 
    on dd.department_id = m.department_id 

同じ名前/別名を持つ2つの異なるカラムを使用しようとしている - このエラーが発生します。すべての列には固有の名前/エイリアスが必要です。

0

同じエイリアスを2回使用しました。

select e.employee_id e_id 
     , e.first_name || ' ' || e.last_name employee_name 
     , e.job_id 
     , e.department_id 
     , e.department_name 
     , e.salary || ' $ ' 
     , to_char(e.hire_date , ' day- dd - mon -yyyy') employee_hire_date 
     , m.employee_id m_id 
     , m.first_name || ' ' || m.last_name manager_name 
     , m.job_id 
     , m.department_id 
     , m.department_name 
     , m.salary 
FROM employees e join employees m 
    on m.employee_id = e.manager_id 
JOIN departments d 
    on d.department_id = e.department_id 
JOIN departments d2 
    on d2.department_id = m.department_id 
0

部門名の別名を別名でエイリアスし、department_Idと部門名が部門から来たと仮定して選択を修正しました。

select e.employee_id e_id 
     , e.first_name || ' ' || e.last_name employee_name 
     , e.job_id 
     , de.department_id   --***This line Updated alias 
     , de.department_name   --***this line Updated alias 
     , e.salary || ' $ ' 
     , to_char(e.hire_date , ' day- dd - mon -yyyy') employee_hire_date 
     , m.employee_id m_id 
     , m.first_name || ' ' || m.last_name manager_name 
     , m.job_id 
     , dm.department_id   --***This line Updated alias 
     , dm.department_name   --***This line Updated alias 
     , m.salary 
FROM employees e 
JOIN employees m 
    on m.employee_id = e.manager_id 
JOIN departments de      --***this line Updated alias 
    on de.department_id = e.department_id --***this line Updated alias 
JOIN departments dm      --***this line Updated alias 
    on dM.department_id = m.department_id --***this line Updated alias 
関連する問題