2016-04-21 77 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