2

そのため、今学期は SQL を理解するのに非常に苦労しています。私は SQL に関する知識に自信がありません。次のような演習に取り組もうとしています。

DEPARTMENT_ID , DEPARTMENT_NAME , FULL_NAME, JOB_TITLE 役職に「Sales」という単語が含まれる従業員の名前と姓をスペースで連結した FULL_NAME列を持つ従業員のリストを取得する SELECT ステートメント。リストは、役職と部署名でソートする必要があります。

これまでのところ、私はこれを思いついた

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

コマンドの「Column 8」は 8 番目の文字、department_idフィールドです。department_id両方にその列がある 2 つのテーブルから列を選択しています。WHERE 句に基づいてそれらの値が同一であることがわかっているにもかかわらず、パーサーはdepartment_id( からの 1 つと からdepartmentsの 1 つemployees)の 2 つの可能な値を認識するため、あいまいです。 次のいずれかを選択する必要があります。

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

選択したフィールドの e.department_id または d.department_id (など) のどちらであるかを指定します

于 2013-03-07T20:17:36.810 に答える