比较SQL Plus Oracle中两个不同表的值

时间:2014-03-29 19:37:28

标签: oracle oracle11g sqlplus

我有多个表,其中有一些外键。这是表格;

Doctor
Doctor_id, FirstName, SecondName,etc...

Hospital
Hospital_id, Name...

Job
Job_id
fk Doctor_id
fk Hospital_id

我正在尝试显示在'X'医院工作的医生名单。我该如何运行此查询?

SELECT FirstName, SecondName
FROM Doctor, Job, Hospital
WHERE Hospital.Name = 'HospitalName' AND Job.hospital_id = Hospital.hospital_id;

我不确定该特定查询是否正确,因为它显示了每个医生(不是那些在'HospitalName'中工作的医生。如果这是正确的,我猜外键不对吗?

提前致谢。 DG

2 个答案:

答案 0 :(得分:2)

您应该学会使用正确的连接语法。那么这样的错误就不太可能发生了:

SELECT d.FirstName, d.SecondName
FROM Doctor d join
     Job j
     on d.Doctor_id = j.Doctor_Id join
     Hospital h
     on j.hospital_id = h.hospital_id
WHERE h.Name = 'HospitalName';

这也为每列添加了表别名,因此阅读查询的人知道它们的来源。

答案 1 :(得分:1)

您缺少一个加入条件。

SELECT FirstName, SecondName
FROM Doctor, Job, Hospital
WHERE Hospital.Name = 'HospitalName' 
AND Job.hospital_id = Hospital.hospital_id
AND job.Doctor_id = Doctor.doctor_id;