2015-10-14 157 views
0

我的同事问我要帮助,在MS Access的查询连接三个表。我已经确认JOIN的订单和内部/外部状态是我的同事想要的。 (他们有三个表,A,B和C,他们希望从表B中的所有记录以及从A匹配的记录和C)去除重复记录在MS Access JOIN

的(消毒)查询是:

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 B.ID, B.Date, A.Time ... 
GROUP BY B.ID, B.Date, A.Time 

然后查询返回重复记录(记录数约为19000)。如何改进查询以消除重复项?

This Stack Overflow answer帮我找出了表B.我曾经尝试过子句只是GROUP BY B.IDGROUP BY条款,但得到了我没有做任何与聚集的B.Date错误消息。

+0

向我们展示你的意思受骗者?因为正常的第二个查询有更多的记录。你现在有'[ID,日期]'分成diferent'[时间]' –

+0

作为最好的,我们可以告诉结果有相同的数据记录。我会仔细检查以确认记录是否相同。 –

回答

0

它实际上是产生重复的记录,或者是现在从具有不同的时间在同一天返回多个记录?如果是这样,您需要评估这些实际上是否为报告目的的重复记录。如果是这样,你会想在SELECT子句中有类似分钟(a.time)或最大(a.time)聚集的时间(只得到了最早的或最新的实例),并把它从小组通过。

+0

我将评估记录是否包含重复数据。没有什么可以确定的。 –

+0

否,记录不是100%重复 - 表A中的一个字段对应于表B上的单个条目的多个条目具有不同的数据。 –