SQL 访问 2007/2010 选择具有不同 ID 的最大日期
SQL Access 2007/2010 Selecting Max Date with Distinct ID
我相信很多人已经问过这个问题,因为我已经从这里阅读了所有主题。但问题是我有 3 个相关的 table 而不是 2 个,我不确定如何为它编码
我有一个 table: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, 类型
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;
想要的结果:
任何帮助将不胜感激!
您可以通过多种方法执行此操作,其中一种是:
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 这样它会识别它,或者它可能会起作用..
我相信很多人已经问过这个问题,因为我已经从这里阅读了所有主题。但问题是我有 3 个相关的 table 而不是 2 个,我不确定如何为它编码
我有一个 table: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, 类型
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;
想要的结果:
任何帮助将不胜感激!
您可以通过多种方法执行此操作,其中一种是:
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 这样它会识别它,或者它可能会起作用..