0

我相信很多人已经问过这个问题,因为我已经阅读了这里的所有主题。但问题是我有 3 个相关表而不是 2 个,我不确定如何为此编码

我有一张桌子tbl_Instrumentstbl_Recordtbl_Cal_Bytbl_Instruments具有所有仪器信息,包括其 ID。 tbl_Cal_By有校准工具的人的信息。 tbl_Records拥有所有仪器记录及其校准日期。它从Inst_ID继承 ID,从tbl_InstrumentsName_ABBR继承Name 。tbl_Cal_By

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;

期望的结果:

在此处输入图像描述

任何帮助将不胜感激!

4

1 回答 1

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 的别名,这样它就会识别它,或者它可能会工作..

于 2016-03-01T14:46:00.133 回答