Oracle 11g - 从表列中选择多个记录

时间:2017-03-04 10:41:40

标签: oracle oracle11g

我只是想知道如何从表格列中选择多条记录。请参阅下面的查询。

SELECT DISTINCT DEPARTMENT_NAME, CITY, COUNTRY_NAME
FROM OEHR_DEPARTMENTS
NATURAL JOIN OEHR_EMPLOYEES 
NATURAL JOIN OEHR_LOCATIONS 
NATURAL JOIN OEHR_COUNTRIES
WHERE JOB_ID = 'SA_MAN' AND JOB_ID = 'SA_REP'
;

基本上,我希望能够从我的表列中获得select条记录,但是当您使用AND时,它只显示SA_MAN而不显示SA_REP。我也试过使用OR,它没有显示选择的行。如果没有它只显示一个或另一个,我怎么能实际选择两个作业ID。

对不起,这可能听起来像一个愚蠢的问题(可能没有措辞正确),但我对Oracle 11g SQL很新。

1 个答案:

答案 0 :(得分:0)

为了您在调试时的舒适度,我建议您使用内部联接而不是自然联接。

where条款令人困惑,如果不是完全错误的话,因为你不清楚哪些表格和#39;应该过滤JOB_ID。使用内部联接,为表提供别名,并在where子句中引用这些别名。

select  distinct DEPARTMENT_NAME, CITY, COUNTRY_NAME
from    OEHR_DEPARTMENTS t1
join    OEHR_EMPLOYEES t2
  on    ...
join    OEHR_LOCATIONS t3
  on    ...
join    OEHR_COUNTRIES t4
  on    ...
where   tn.JOB_ID = 'SA_MAN' AND tm.JOB_ID = 'SA_REP'

在以某种方式重新表述您的查询之后,您将对where子句中必须使用的逻辑运算符有更清晰的看法,我打赌它将是{{1 }}

编辑(在详细说明之后)

列出雇佣员工的部门,包括' SA_MAN'和' SA_REP' job_id,您必须与部门员工加入两次,一次使用过滤器OR,一次使用job_id='SA_MAN'

job_id='SA_REP'