访问SQL连接问题

时间:2011-09-14 21:36:56

标签: sql ms-access

使用MS Access。我很抱歉标题含糊不清 - 我只是不知道如何描述这是什么类型的问题,我只知道我需要加入两个表或查询来解决它。

我有一个OrgHistory表,显示每个人(按ID)在某个日期加入的组织(您一次只能成为一个组织的成员):

Person | Org | JoinDate
-----------------------
123    | abc | 3/2/2011
456    | abc | 4/23/1925
123    | def | 5/12/2011

我还有一个Activities表:

Person | Activity | ActivityDate
--------------------------------
123    | eat      | 3/23/2011
123    | sleep    | 6/25/2011
456    | walk     | 7/20/1985

我想找出Activities中每个记录,该人在活动当天所属的组织。我认为这可能涉及将JoinDate值转换为一组范围并将ActivityDate匹配到适当的间隔,但我对如何设计查询有点困惑 - 在这种情况下 - 如何创建范围并将单个值与范围匹配?

我认为partition()不会起作用,因为我不是想在已知数量的存储桶中保存多个JoinDate值。

1 个答案:

答案 0 :(得分:5)

我不能保证这是最有效的方式,但它可以在Access中使用您提供的测试数据:

SELECT a.person, a.activity, 
       (
        SELECT TOP 1 org 
          FROM orghistory AS o 
         WHERE o.person = a.person 
               AND o.joindate <= a.activitydate 
         ORDER 
            BY o.joindate DESC
       ) AS Org
  FROM activities AS a;