簡體   English   中英

SQL(MS ACCESS)基於最大值的聯接表

[英]SQL (MS ACCESS) Joining tables based on a maximum value

我正在嘗試在MS ACCESS中加入表。 有問題的表是PatientDB和DailyAssessment。

PatientDB表包含主鍵Patient_UID。

DailyAssessment表包含主鍵評估_UID。 它還包含一個Patient_UID字段,該字段在數據庫關系中鏈接到PatientDB。

我想要實現的是:

從PatientDB表中選擇滿足以下條件的所有記錄:Patient_Active = TRUE。

對於每個活動記錄,我想檢索DailyAssessments表中的最新條目。 到目前為止,我已經嘗試通過使用以下方法來實現:

Max(Assessment_UID)作為MaxOfAssessment_UID

然后使用該值嘗試聯接查詢,該查詢返回DailyAssessment表中的其他值。

SQL如下所示:

SELECT PatientDB.Patient_UID, 
Max(DailyAssessment.Assessment_UID) AS 
MaxOfAssessment_UID, 
qryAssessmentData.Assessment_Date, 
qryAssessmentData.Assessment_Time, 
qryAssessmentData.Rescue_Analgesia, qryAssessmentData. 
[Review By], qryAssessmentData.Assessment_Grade, 
qryAssessmentData.Assessment_Notes
FROM (PatientDB INNER JOIN DailyAssessment ON 
PatientDB.Patient_UID = DailyAssessment.Patient_UID) 
INNER JOIN qryAssessmentData ON MaxOfAssessment_UID = 
qryAssessmentData.Assessment_UID
GROUP BY PatientDB.Patient_UID, 
qryAssessmentData.Assessment_Date, 
qryAssessmentData.Assessment_Time, 
qryAssessmentData.Rescue_Analgesia, qryAssessmentData. 
[Review By], qryAssessmentData.Assessment_Grade, 
qryAssessmentData.Assessment_Notes;

但是,我得到一個不支持JOIN表達式的錯誤,它突出顯示了以下內容:'JOIN qryAssessmentData ON MaxOfAssessment_UID = qryAssessmentData.Assessment_UID。

有誰知道如何實現此目標-是更簡單的方法,還是我做錯了什么? 我對SQL有相當基本的了解,因此希望您提出任何建議!

非常感謝。

您不能再次使用列別名-不能在SELECTWHEREON (好的,您可以在ORDER BY )。

您還是不希望聚合。 您只需要過濾。

如果我理解正確,則您需要以下內容:

SELECT . . .
FROM PatientDB as p INNER JOIN
     DailyAssessment as da
     ON p.Patient_UID = da.Patient_UID
WHERE da.Assessment_UID = (SELECT MAX(da2.Assessment_UID)
                           FROM DailyAssessment da2
                           WHERE da2.Patient_UID = da.Patient_UID
                          );

筆記:

  • 您的問題沒有表明第三張桌子的用途。
  • 您的問題沒有表明如何確定患者是否活躍。
  • 這引入了表別名,因此您的查詢更易於編寫和閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM