Access SQL присоединиться к вопросу - PullRequest
8 голосов
/ 15 сентября 2011

Использование MS Access.Я сожалею, что название нечеткое - я просто не знаю, как описать, что это за проблема, я просто знаю, что мне нужно объединить две таблицы или запросы для ее решения.

У меня есть таблица OrgHistory, которая показывает, к какой организации каждый человек (по идентификатору) присоединился в определенный день (вы можете быть членом только одной организации за раз):

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 Ответ

5 голосов
/ 15 сентября 2011

Не могу обещать, что это самый эффективный способ, но он работает в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...