Sql 返回两个字段不同的查询结果(Access 2010)
我在一个大型access数据库(access 2010)中工作,试图返回两个位置不同的记录 在我的例子中,我有大量的鸟类在多个日期被观察到,可能在不同的岛屿上。每只鸟都有一个唯一的鸟,还有一个实际的物理标识符(不幸的是,随着时间的推移,这个标识符可能会发生变化)。[稍后我将尝试解决不断变化的物理标识符问题]。目前,我想询问个别鸟类,它们的一个或多个观察结果与“IslandAlpha”(第一个观察到它们的岛屿)不同。类似于鸟人标准的东西:IslandID[不等于]IslandAlpha 然后,我需要一个单独的查询,以找到所有观察值在哪里与它们第一次被观察到的位置相等。那么IslandID=IslandAlpha在哪里Sql 返回两个字段不同的查询结果(Access 2010),sql,database,ms-access,criteria,Sql,Database,Ms Access,Criteria,我在一个大型access数据库(access 2010)中工作,试图返回两个位置不同的记录 在我的例子中,我有大量的鸟类在多个日期被观察到,可能在不同的岛屿上。每只鸟都有一个唯一的鸟,还有一个实际的物理标识符(不幸的是,随着时间的推移,这个标识符可能会发生变化)。[稍后我将尝试解决不断变化的物理标识符问题]。目前,我想询问个别鸟类,它们的一个或多个观察结果与“IslandAlpha”(第一个观察到它们的岛屿)不同。类似于鸟人标准的东西:IslandID[不等于]IslandAlpha 然后,我需
我是新手,所以如果您需要有关如何设置我的表/关系的更多信息,请告诉我!提前感谢。假设下表:
Birds
表格,其中所有鸟类都有一个唯一的BirdID
和IslandAlpha
记录目击记录
记录个人目击记录的表格,包括IslandID
SELECT *
FROM Birds
INNER JOIN Sightings ON Birds.BirdID=Sightings.BirdID
WHERE Sightings.IslandID <> Birds.IslandAlpha
选择*
来自鸟类
鸟类内部连接目击。BirdID=目击。BirdID
在那里可以看到岛上的鸟,岛上的阿尔法
您的第二个查询将是相同的,但是在WHERE
子句中使用=
而不是
请向我们提供您正在使用的表和列的信息。我认为您是在问这个问题,因为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;
从观察中选择*
内部连接Query1 ON Observations.ObsBirdID=Query1.ObsBirdID
其中,ObsLocID查询1.ObsLocID;
编辑问题以显示样本数据和所需输出。“IslandAlpha”数据在哪里?