2014-03-29 93 views
0

我有一些外鍵的多個表。這裏是表格;在SQL Plus中比較兩個不同表中的值Oracle

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

回答

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; 
+0

噢,你是一個拯救生命的人!非常感謝! –

2

你應該學會使用正確的聯接語法,然後像這樣的失誤也少得多像發生LY:

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'; 

這也增加爲每列表的別名,所以有人閱讀查詢知道他們來自哪裏。