0

私はOracle SQLとプログラミングに非常に慣れていないので、最初のプロジェクトの1つで助けが必要です. 私はこのテーブルスキーマを使用しています:

Column  Data Type   Length  Precision   Scale   Nullable
EMPLOYEE_ID NUMBER    22      6           0        No
START_DATE  DATE      7        -          -        No
END_DATE    DATE      7        -          -        No
JOB_ID     VARCHAR2   10       -          -        No
DEPARTMENT_ID   NUMBER  22     4          0        Yes

一度も転職したことがないすべての従業員を表示したい (上記の表に記載されていない従業員) このテーブルには job_history というラベルが付けられています。どうすればこれを行うことができますか?これを開始する方法がわかりません。

4

3 に答える 3

1
select * from employees
where employee_id not in ( select employee_id from job_history)
/
于 2013-03-29T00:24:39.167 に答える
1

左結合を使用して、job_history テーブルで null の employee_id をチェックできます。

select * from employees 
left join job_history 
on job_history.employee_id = employees.employee_id 
where job_history.employee_id is NULL
于 2013-03-29T00:27:36.160 に答える
-1

多くの場合、実行計画の方が優れています

select * from employees e where not exists 
  (select 1 from job_history jh.employee_id = e.employee_id)

「()にない」よりも。そして、テーブルが同じ構造を持っている場合、最良の結果は

select * from employees 
minus
select * from job_history 
于 2013-03-29T06:43:00.267 に答える