Возврат результатов запроса, если два поля различны (Access 2010) - PullRequest
0 голосов
/ 01 октября 2019

Я работаю в большой базе данных доступа (Access 2010) и пытаюсь вернуть записи, где два местоположения отличаются.

В моем случае у меня есть большое количество птиц, которые наблюдались в разные даты и, возможно, на разных островах. Каждая птица имеет уникальный BirdID, а также фактический физический идентификатор (к сожалению, со временем он может измениться). [Я собираюсь попытаться решить проблему изменения физического идентификатора позже]. В настоящее время я хочу опросить отдельных птиц, где одно или несколько их наблюдений отличается от «IslandAlpha» (первый остров, где они наблюдались). Нечто похожее на критерий BirdID: ГДЕ IslandID [не равно] IslandAlpha.

Затем мне нужен отдельный запрос, чтобы найти, где все наблюдения равны там, где они впервые наблюдались. Итак, где IslandID = IslandAlpha

Я новичок в Access, поэтому дайте мне знать, если вам нужна дополнительная информация о том, как настроены мои таблицы / отношения! Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Я предполагаю, что вы задаете этот вопрос, потому что простое объединение таблиц и фильтрация там, где IslandAlpha <> ObsLoc, невозможна, поскольку IslandAlpha получена из первой записи наблюдения для каждой птицы. Получение первой записи наблюдения для каждой птицы требует вложенного запроса. Нужен уникальный идентификатор записи в Наблюдениях - должен использоваться автономный номер. Предполагая, что есть поле даты / времени наблюдения, рассмотрим:

SELECT * FROM Observations WHERE ObsID IN 
    (SELECT TOP 1 ObsID FROM Observations AS Dupe 
     WHERE Dupe.ObsBirdID = Observations.ObsBirdID ORDER BY Dupe.ObsDateTime);

Теперь используйте этот запрос для последующих запросов.

SELECT * FROM Observations 
INNER JOIN Query1 ON Observations.ObsBirdID = Query1.ObsBirdID 
WHERE Observations.ObsLocID <> Query1.ObsLocID;
0 голосов
/ 01 октября 2019

Предполагая следующие таблицы:

  1. Birds таблица, в которой все отдельные птицы имеют записи с уникальной таблицей BirdID и IslandAlpha.
  2. Sightings вкакие отдельные наблюдения записаны, включая IslandID.

Ваш первый запрос будет выглядеть примерно так:

SELECT *
FROM Birds
INNER JOIN Sightings ON Birds.BirdID=Sightings.BirdID 
WHERE Sightings.IslandID <> Birds.IslandAlpha

Ваш второй запрос будет таким же, но с =вместо <> в предложении WHERE.

Пожалуйста, предоставьте нам информацию о таблицах и столбцах, которые вы используете.

...