我有多个表,其中有一些外键。这是表格;
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
答案 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;