我的同事向我请求MS Access中一个连接三个表的查询的帮助。我已经确认JOIN
的顺序和内部/外部状态是我的同事想要的。 (他们有三个表,A,B和C;他们想要表B中的所有记录以及来自A和C的匹配记录。)
(已消毒的)查询是:
SELECT B.ID, B.Date from (A RIGHT JOIN B on A.ID = B.ID) LEFT JOIN C on B.ID = C.ID
GROUP BY B.ID, B.Date
返回正确的行数(约16000)。但是,当我将select和group子句更改为
时SELECT B.ID, B.Date, A.Time ...
GROUP BY B.ID, B.Date, A.Time
然后查询返回重复记录(记录数约为19000)。如何改进查询以消除重复项?
This Stack Overflow answer帮助我找出表B的GROUP BY
子句。我曾尝试将该子句视为GROUP BY B.ID
,但收到的错误信息是我没有做过任何事情。与B.Date
聚合。
答案 0 :(得分:0)
它实际上是在生成重复记录,还是现在从同一天返回多个记录,这些记录有不同的时间?如果是这样,您将需要评估这些实际上是否为报告目的的重复记录。如果是,则需要在select子句中使用min(a.time)或max(a.time)等时间聚合时间(仅获取最早或最新的实例)并将其从组中删除。