【问题标题】:Microsoft Access Query producing duplicate resultsMicrosoft Access Query 产生重复的结果
【发布时间】:2017-12-11 19:17:23
【问题描述】:

我有一个访问查询,用于生成基于表单的报告。我在查询产生重复记录时遇到问题。

经过一番调查,我发现这是因为我有一个包含多个潜在值的查找字段,并且每次该字段中有一个值时查询都会创建一条记录,尽管显示了每个字段中的所有值(其中是预期的结果)。

知道如何解决这个问题吗?我只希望它在查询结果中显示每条记录的一个实例。

我已经尝试将查询设置为使用唯一值和唯一记录,而唯一值只会在我运行查询时提示我为查找字段输入数据。

查询的 SQL 是:

PARAMETERS [Enter Start Date:] DateTime, [Enter End Date:] DateTime;
SELECT DISTINCTROW RA_Generic.ID, RA_Generic.Title, RA_Generic.Description, 
RA_Generic.[Person Carrying Out], RA_Generic.Hazard_1, 
RA_Generic.Level_Of_Risk_1, RA_Generic.Control_Measures_1, 
RA_Generic.Worst_Possible_Outcome_1, RA_Generic.Level_Of_Risk_1_After, 
RA_Generic.Hazard_2, RA_Generic.Level_Of_Risk_2, 
RA_Generic.Control_Measures_2, RA_Generic.Worst_Possible_Outcome_2, 
RA_Generic.Level_Of_Risk_2_After, RA_Generic.Hazard_3, 
RA_Generic.Level_Of_Risk_3, RA_Generic.Control_Measures_3, 
RA_Generic.Worst_Possible_Outcome_3, RA_Generic.Level_Of_Risk_3_After, 
RA_Generic.Hazard_4, RA_Generic.Level_Of_Risk_4, 
RA_Generic.Control_Measures_4, RA_Generic.Worst_Possible_Outcome_4, 
RA_Generic.Level_Of_Risk_4_After, RA_Generic.Hazard_5, 
RA_Generic.Level_Of_Risk_5, RA_Generic.Control_Measures_5, 
RA_Generic.Worst_Possible_Outcome_5, RA_Generic.Level_Of_Risk_5_After, 
RA_Generic.Hazard_6, RA_Generic.Level_Of_Risk_6, 
RA_Generic.Control_Measures_6, RA_Generic.Worst_Possible_Outcome_6, 
RA_Generic.Level_Of_Risk_6_After, RA_Generic.Date_Updated, 
RA_Generic.Type_Of_RA, RA_Generic.Specific, RA_Generic.[Hazard Types]
FROM RA_Generic
GROUP BY RA_Generic.ID, RA_Generic.Title, RA_Generic.Description, 
RA_Generic.[Person Carrying Out], RA_Generic.Hazard_1, 
RA_Generic.Level_Of_Risk_1, RA_Generic.Control_Measures_1, 
RA_Generic.Worst_Possible_Outcome_1, RA_Generic.Level_Of_Risk_1_After, 
RA_Generic.Hazard_2, RA_Generic.Level_Of_Risk_2, 
RA_Generic.Control_Measures_2, RA_Generic.Worst_Possible_Outcome_2, 
RA_Generic.Level_Of_Risk_2_After, RA_Generic.Hazard_3, 
RA_Generic.Level_Of_Risk_3, RA_Generic.Control_Measures_3, 
RA_Generic.Worst_Possible_Outcome_3, RA_Generic.Level_Of_Risk_3_After, 
RA_Generic.Hazard_4, RA_Generic.Level_Of_Risk_4, 
RA_Generic.Control_Measures_4, RA_Generic.Worst_Possible_Outcome_4, 
RA_Generic.Level_Of_Risk_4_After, RA_Generic.Hazard_5, 
RA_Generic.Level_Of_Risk_5, RA_Generic.Control_Measures_5, 
RA_Generic.Worst_Possible_Outcome_5, RA_Generic.Level_Of_Risk_5_After, 
RA_Generic.Hazard_6, RA_Generic.Level_Of_Risk_6, 
RA_Generic.Control_Measures_6, RA_Generic.Worst_Possible_Outcome_6, 
RA_Generic.Level_Of_Risk_6_After, RA_Generic.Date_Updated, 
RA_Generic.Type_Of_RA, RA_Generic.Specific
HAVING (((RA_Generic.Date_Updated) Between [Enter Start Date:] And [Enter 
End Date:]))
ORDER BY RA_Generic.ID DESC;

导致问题的字段是 HazardTypes

【问题讨论】:

  • 请分享查询
  • 如何将查询附加到 stackoverflow 问题?
  • 你共享的SQL
  • 找到你想要的,添加它。
  • 我附上了查询生成的 SQL。我对 SQL 本身有点熟悉,只是不确定如何特别处理这个特定问题。

标签: ms-access duplicates


【解决方案1】:

我将删除GROUP BY 子句和DISTINCTROW,并将HAVING 子句移至WHERE 子句,因为您没有进行任何聚合。

PARAMETERS [Enter Start Date:] DateTime, [Enter End Date:] DateTime;
SELECT RA_Generic.ID, RA_Generic.Title, RA_Generic.Description, 
RA_Generic.[Person Carrying Out], RA_Generic.Hazard_1, 
RA_Generic.Level_Of_Risk_1, RA_Generic.Control_Measures_1, 
RA_Generic.Worst_Possible_Outcome_1, RA_Generic.Level_Of_Risk_1_After, 
RA_Generic.Hazard_2, RA_Generic.Level_Of_Risk_2, 
RA_Generic.Control_Measures_2, RA_Generic.Worst_Possible_Outcome_2, 
RA_Generic.Level_Of_Risk_2_After, RA_Generic.Hazard_3, 
RA_Generic.Level_Of_Risk_3, RA_Generic.Control_Measures_3, 
RA_Generic.Worst_Possible_Outcome_3, RA_Generic.Level_Of_Risk_3_After, 
RA_Generic.Hazard_4, RA_Generic.Level_Of_Risk_4, 
RA_Generic.Control_Measures_4, RA_Generic.Worst_Possible_Outcome_4, 
RA_Generic.Level_Of_Risk_4_After, RA_Generic.Hazard_5, 
RA_Generic.Level_Of_Risk_5, RA_Generic.Control_Measures_5, 
RA_Generic.Worst_Possible_Outcome_5, RA_Generic.Level_Of_Risk_5_After, 
RA_Generic.Hazard_6, RA_Generic.Level_Of_Risk_6, 
RA_Generic.Control_Measures_6, RA_Generic.Worst_Possible_Outcome_6, 
RA_Generic.Level_Of_Risk_6_After, RA_Generic.Date_Updated, 
RA_Generic.Type_Of_RA, RA_Generic.Specific, RA_Generic.[Hazard Types]
FROM RA_Generic
WHERE (((RA_Generic.Date_Updated) Between [Enter Start Date:] And [Enter 
End Date:]))
ORDER BY RA_Generic.ID DESC;

【讨论】:

  • 修复了!更新查询后更改了报告的记录源,现在可以使用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多