我正在尝试在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有相当基本的了解,因此欢迎您提出任何建议!
非常感谢。
答案 0 :(得分:0)
您不能第二次使用列别名-不在SELECT
或WHERE
或ON
中使用(好的,可以在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
);
注意: