我只是想知道如何从表格列中选择多条记录。请参阅下面的查询。
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很新。
答案 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'