2016-04-21 75 views
2

我正在创建一个关于医疗实践的测试数据库。这是我的呃图的图片以供参考。 ER diagramsql多个属性加入

所以基本上我的问题是如何正确连接。我试图给出一个从特定练习中看到的患者列表(例如练习编号1),但我也想显示练习名称和细节。我也想表现的患者,谁工作或已经对这种做法GP的列表(请注意,我只填充我的表有10行测试数据)

我已经走到这一步,

select patient.firstname, patient.surname 
from patient 
Join appointment on patient.patientid = appointment.patientid 
where appointment.practiceid IN (1) 
ORDER BY firstname; 

`我还将如何包括练习细节和gp细节也与这种练习相关联。令我困惑的是我如何添加更多的选择语句,如果他们不是来自患者表。任何帮助将是伟大的!

+0

好答案。如果你真的想要一个给定的练习,(不是一套练习),改变你的where子句是有意义的。使用“where appointment.practiceid = 1”。这是更快,只是良好的做法。 OTOH,如果你真的想要一套做法,只需按照答案中的建议进行加入。 – quest4truth

回答

0

我已经包括了如何在查询中显示Practice_Name,如果您对提到的每个其他查询使用相同的连接逻辑方法,那么您就可以解决这个问题。我认为这是一种更好的学习方式,而不是在一个答案中解决上述所有问题。

SELECT PR.Practice_Name, P.firstname, P.surname 
FROM  patient AS P 
      INNER JOIN appointment AS A ON P.patientid = A.patientid 
      INNER JOIN Practice AS PR ON A.practiceid = PR.practiceid 
WHERE  A.practiceid IN (1) 
ORDER BY P.firstname; 
0

您可以只需添加更多join条款:

SELECT patient.firstname, patient.surname, practice.name, practice.address 
FROM  patient 
JOIN  appointment ON patient.patientid = appointment.patientid 
JOIN  practice ON appointment.practiceid = practice.practiceid 
WHERE appointment.practiceid IN (1) 
ORDER BY firstname; 
+0

谢谢,这真的很有帮助! – user3357649

0

我喜欢我的别名SQL语句。节省打字时间。

SELECT p.firstname, p.surname, pr.Details 
FROM patient p 
JOIN appointment a ON p.patientid = a.patientid 
JOIN Practice pr ON pr.PracticeId = a.PracticeId 
WHERE a.practiceid IN (1) 
ORDER BY p.firstname; 
+0

非常感谢!这真的有帮助! – user3357649