访问数据库需要从另一个表中获取最近日期的记录

时间:2016-06-09 14:53:59

标签: sql ms-access

我被困在这个查询上几个小时,希望一个访问大师可以帮助我。

我正在使用另一个表(1到多个)向内部联接编写SELECT查询。我只需要获取最近日期的记录。我研究并尝试了许多不起作用的查询示例。

我最接近的就是这个

SELECT 
tblData.RecentDate,
tblData.ID,
tblData.Name,
tblData.Address

FROM [table1] 

INNER JOIN 
        (   SELECT Top 1 *
            FROM    [table2] bh1
            ORDER BY bh1.RecentDate DESC
        ) tblData
ON [table1].[ID] = tblData.[ID])

Top 1没有给我每个ID的记录。如果我删除Top 1,我会看到所有带有ID的记录,但我注意到RecentDate字段是空白的。如果我在查询中保留前1,则ID 1和4的记录不在结果中。

我也试过以下

INNER JOIN 
        (   SELECT   Max(bh1.RecentDate) as RecentDate, bh1.Name, branchhistory.Address, bh1.City,
            FROM    [table2] bh1
            GROUP BY bh1.ID
        ) tblData
ON [table1].[ID] = tblData.[UDID]

此查询仅在我选择Max(bh1.RecentDate)为RecentDate,bh1.ID时有效 和bh1.ID组合...但我还有其他要获取的字段 添加到Group By并且不会仅返回1条记录。

从我的内部联接,我需要获取包含许多字段的记录并按最近的日期值获取。

我刚刚尝试了以下内容,但并非所有ID都会回来

INNER JOIN 
        (   SELECT  *
            FROM    [table2] bh1
            WHERE bh1.RecentDate= (SELECT Max(bh2.RecentDate) from  [table2] as bh2 WHERE bh1.ID =  bh2.ID )

        ) tblData
ON [table1].[ID] = tblData.[ID]

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

将此保存为永久查询:

SELECT ID, Max(RecentDate) AS MaxDate FROM table2 GROUP BY ID

然后通过ID将表1连接到该查询,然后通过ID将表连接到table2并使用MaxDate = Recentdate