我相信很多人已经问过这个问题,因为我已经从这里读到了所有话题。但问题是我有3个相关的表而不是2个,我不知道如何为此编码
我有一张桌子:tbl_Instruments
,tbl_Record
和tbl_Cal_By
。
tbl_Instruments
包含所有文书信息,包括其ID。
tbl_Cal_By
具有校准工具的任何人的信息。
tbl_Records
拥有所有仪器记录及其校准日期。它将tbl_Instruments
中的ID继承为 Inst_ID ,将tbl_Cal_By
中的名称继承为 Name_ABBR 。
tbl_Instruments:ID,Type
tbl_Cal_By:Cal_ID,Name_ABBR
tbl_Records:Record_ID,Inst_ID,Cal_Date,Name_ABBR
这是我的代码。
SELECT tbl_Records.Inst_ID
,tbl_Instruments.Type
,Max(tbl_Records.Cal_Date) AS MaxOfCal_Date
,tbl_Cal_By.Name_ABBR
FROM tbl_Cal_By
RIGHT JOIN (
tbl_Instruments INNER JOIN tbl_Records ON tbl_Instruments.ID = tbl_Records.Inst_ID
) ON tbl_Cal_By.ID = tbl_Records.BY
GROUP BY tbl_Records.Inst_ID
,tbl_Instruments.Type
,tbl_Cal_By.Name_ABBR;
期望的结果:
任何帮助将不胜感激!
答案 0 :(得分:1)
你可以用几种方法做到这一点,其中一种是存在的:
SELECT tbl_Records.Inst_ID
,tbl_Instruments.Type
,tbl_Records.Cal_Date AS MaxOfCal_Date
,tbl_Cal_By.Name_ABBR
FROM tbl_Cal_By
RIGHT JOIN (
tbl_Instruments INNER JOIN tbl_Records ON tbl_Instruments.ID = tbl_Records.Inst_ID
) ON tbl_Cal_By.ID = tbl_Records.BY
WHERE NOT EXISTS(SELECT 1 FROM tbl_Records t
WHERE t.Inst_ID = tbl_Instruments.ID
AND t.Cal_date > tbl_Records.Cal_Date)
我不完全确定访问语法和别名..所以也许你必须稍微调整它 - 比如第一个tbl_records的别名所以它会识别它,或者它可能会工作..