Query with Totals Query results as criteria returns 预期结果数的平方
Query with Totals Query results as criteria returns the expected number of results squared
背景
我正在构建一个具有 table [ControllerAdjustments] 的 Access 2010 数据库,它使用 [AdjustmentID] 自动编号字段、[ControllerID] 字段、[AdjustmentDate] 跟踪对控制器所做的所有调整字段、[Setpoint] 字段和 [Power] 字段。 [Power] 字段表示进行调整时的功率级别。最终我需要两个查询 return 两组结果,一个查询应该 return 所有控制器的当前状态(基本上是对每个控制器所做的最新调整),另一个应该 return对功率级别为 100% 的每个控制器所做的最新调整。我计划使用这些查询中的每一个来提供报告。注意:为方便输入,字段名称略有变化,代码块中给出了全名...
方法
我首先关注当前查询,并认为我只需复制它并进行必要的更改以创建 100% 的查询。我从 [ControllerAdjustments] table 上的总计查询开始,其中 [ControllerID] 作为分组依据字段,[AdjustmentDate] 作为 return 编辑最大值的字段。这个查询 return 正好是我预期的记录数,在查看我放入 table 中的样本虚假数据进行检查后,似乎 return 正是我需要的记录。然后我创建了一个 Select 查询,该查询 return 在我的当前报告中编辑了我想要的所有字段,即 [ControllerAdjustments] table 和上游相关 table 中的相关记录.然后,我将 Select 查询中 [ControllerID] 字段的条件设置为 [Total_CurrentContAdjs]![ControllerID] 并将 Select 查询中的 [AdjustmentDate] 设置为 [Total_CurrentContAdjs]![MaxOfAdjustmentDate]。 运行 这个查询 return 正是我想要的。此查询的 SQL 如下:
SELECT List_Units.UnitID, List_EDTanks.TankNameShort, List_Controllers.ControllerType, ControllerAdjustments.AdjustmentDate, ControllerAdjustments.ControllerSetpoint, ControllerAdjustments.RxPower
FROM Total_ContAdjsCurrent, ((List_Units INNER JOIN List_EDTanks ON List_Units.UnitID = List_EDTanks.UnitID) INNER JOIN List_Controllers ON List_EDTanks.EDTankID = List_Controllers.EDTankID) INNER JOIN ControllerAdjustments ON List_Controllers.ControllerID = ControllerAdjustments.ControllerID
WHERE (((ControllerAdjustments.AdjustmentDate)=[Total_ContAdjsCurrent]![MaxOfAdjustmentDate]) AND ((ControllerAdjustments.ControllerID)=[Total_ContAdjsCurrent]![ControllerID]))
ORDER BY List_Units.Unit, List_EDTanks.TankSortOrder, List_Controllers.ControllerType DESC;
然后我复制了 Totals 查询并为 Power 添加了一列,selected Where,未选中显示,并为条件输入 100。这按预期工作。然后我复制了我的 select 查询,并更改了条件字段以指向我新的 100% 总计查询。这就是我的问题开始的地方。
问题
第二个 100% 查询似乎不喜欢该条件,因为它最初抛出了熟悉的参数 window。这是第二个查询的 SQL 语句,除了引用 100% Totals 查询外几乎相同:
SELECT List_Units.UnitID, List_EDTanks.TankNameShort, List_Controllers.ControllerType, ControllerAdjustments.AdjustmentDate, ControllerAdjustments.ControllerSetpoint, ControllerAdjustments.RxPower
FROM Total_ContAdjsCurrent, Total_ContAdjsStdyState, ((List_Units INNER JOIN List_EDTanks ON List_Units.UnitID = List_EDTanks.UnitID) INNER JOIN List_Controllers ON List_EDTanks.EDTankID = List_Controllers.EDTankID) INNER JOIN ControllerAdjustments ON List_Controllers.ControllerID = ControllerAdjustments.ControllerID
WHERE (((ControllerAdjustments.AdjustmentDate)=[Total_ContAdjsStdyState]![MaxOfAdjustmentDate]) AND ((ControllerAdjustments.ControllerID)=[Total_ContAdjsStdyState]![ControllerID]))
ORDER BY List_Units.Unit, List_EDTanks.TankSortOrder, List_Controllers.ControllerType DESC;
最初,Access 没有将我的总计查询添加到设计视图中的显示 table 框中,因为它的结果没有直接用于 Select 查询。因此,我将总计查询添加到顶部,这允许我的查询 运行 而无需询问参数,但现在它 return 是我期望的结果数的平方。基本上,如果我期待 3 条记录:1、2 和 3,它会给我:1、1、1、2、2、2、3、3 和 3。对于我的生活,我无法弄清楚为什么正在这样做,特别是因为我的当前查询完全相同的设置 returns 正是预期的......我认为我的总计查询中的 where 子句可能与它有关,所以我创建了一个 Select 查询 [ControllerAdjustments] table return 用 100 编辑了所有记录的功率。然后我将此查询用于我的总计查询而不是总计查询本身,但这并没有做任何不同。我不知所措,不确定我还能做些什么来获得我想要的结果。欢迎任何建议,谢谢!
我通过简单地从头开始并重建我的 100% 查询来解决这个问题。查看 SQL 语句,它们看起来相同,但出于某种原因,我的查询现在 returns 正确的记录数。我不知道为什么会这样,并且仍然很好奇如果有时间的人愿意深入研究它,首先出了什么问题,但最初的问题陈述已得到纠正——即使我不知道我是怎么做到的哈哈...
背景
我正在构建一个具有 table [ControllerAdjustments] 的 Access 2010 数据库,它使用 [AdjustmentID] 自动编号字段、[ControllerID] 字段、[AdjustmentDate] 跟踪对控制器所做的所有调整字段、[Setpoint] 字段和 [Power] 字段。 [Power] 字段表示进行调整时的功率级别。最终我需要两个查询 return 两组结果,一个查询应该 return 所有控制器的当前状态(基本上是对每个控制器所做的最新调整),另一个应该 return对功率级别为 100% 的每个控制器所做的最新调整。我计划使用这些查询中的每一个来提供报告。注意:为方便输入,字段名称略有变化,代码块中给出了全名...
方法
我首先关注当前查询,并认为我只需复制它并进行必要的更改以创建 100% 的查询。我从 [ControllerAdjustments] table 上的总计查询开始,其中 [ControllerID] 作为分组依据字段,[AdjustmentDate] 作为 return 编辑最大值的字段。这个查询 return 正好是我预期的记录数,在查看我放入 table 中的样本虚假数据进行检查后,似乎 return 正是我需要的记录。然后我创建了一个 Select 查询,该查询 return 在我的当前报告中编辑了我想要的所有字段,即 [ControllerAdjustments] table 和上游相关 table 中的相关记录.然后,我将 Select 查询中 [ControllerID] 字段的条件设置为 [Total_CurrentContAdjs]![ControllerID] 并将 Select 查询中的 [AdjustmentDate] 设置为 [Total_CurrentContAdjs]![MaxOfAdjustmentDate]。 运行 这个查询 return 正是我想要的。此查询的 SQL 如下:
SELECT List_Units.UnitID, List_EDTanks.TankNameShort, List_Controllers.ControllerType, ControllerAdjustments.AdjustmentDate, ControllerAdjustments.ControllerSetpoint, ControllerAdjustments.RxPower
FROM Total_ContAdjsCurrent, ((List_Units INNER JOIN List_EDTanks ON List_Units.UnitID = List_EDTanks.UnitID) INNER JOIN List_Controllers ON List_EDTanks.EDTankID = List_Controllers.EDTankID) INNER JOIN ControllerAdjustments ON List_Controllers.ControllerID = ControllerAdjustments.ControllerID
WHERE (((ControllerAdjustments.AdjustmentDate)=[Total_ContAdjsCurrent]![MaxOfAdjustmentDate]) AND ((ControllerAdjustments.ControllerID)=[Total_ContAdjsCurrent]![ControllerID]))
ORDER BY List_Units.Unit, List_EDTanks.TankSortOrder, List_Controllers.ControllerType DESC;
然后我复制了 Totals 查询并为 Power 添加了一列,selected Where,未选中显示,并为条件输入 100。这按预期工作。然后我复制了我的 select 查询,并更改了条件字段以指向我新的 100% 总计查询。这就是我的问题开始的地方。
问题
第二个 100% 查询似乎不喜欢该条件,因为它最初抛出了熟悉的参数 window。这是第二个查询的 SQL 语句,除了引用 100% Totals 查询外几乎相同:
SELECT List_Units.UnitID, List_EDTanks.TankNameShort, List_Controllers.ControllerType, ControllerAdjustments.AdjustmentDate, ControllerAdjustments.ControllerSetpoint, ControllerAdjustments.RxPower
FROM Total_ContAdjsCurrent, Total_ContAdjsStdyState, ((List_Units INNER JOIN List_EDTanks ON List_Units.UnitID = List_EDTanks.UnitID) INNER JOIN List_Controllers ON List_EDTanks.EDTankID = List_Controllers.EDTankID) INNER JOIN ControllerAdjustments ON List_Controllers.ControllerID = ControllerAdjustments.ControllerID
WHERE (((ControllerAdjustments.AdjustmentDate)=[Total_ContAdjsStdyState]![MaxOfAdjustmentDate]) AND ((ControllerAdjustments.ControllerID)=[Total_ContAdjsStdyState]![ControllerID]))
ORDER BY List_Units.Unit, List_EDTanks.TankSortOrder, List_Controllers.ControllerType DESC;
最初,Access 没有将我的总计查询添加到设计视图中的显示 table 框中,因为它的结果没有直接用于 Select 查询。因此,我将总计查询添加到顶部,这允许我的查询 运行 而无需询问参数,但现在它 return 是我期望的结果数的平方。基本上,如果我期待 3 条记录:1、2 和 3,它会给我:1、1、1、2、2、2、3、3 和 3。对于我的生活,我无法弄清楚为什么正在这样做,特别是因为我的当前查询完全相同的设置 returns 正是预期的......我认为我的总计查询中的 where 子句可能与它有关,所以我创建了一个 Select 查询 [ControllerAdjustments] table return 用 100 编辑了所有记录的功率。然后我将此查询用于我的总计查询而不是总计查询本身,但这并没有做任何不同。我不知所措,不确定我还能做些什么来获得我想要的结果。欢迎任何建议,谢谢!
我通过简单地从头开始并重建我的 100% 查询来解决这个问题。查看 SQL 语句,它们看起来相同,但出于某种原因,我的查询现在 returns 正确的记录数。我不知道为什么会这样,并且仍然很好奇如果有时间的人愿意深入研究它,首先出了什么问题,但最初的问题陈述已得到纠正——即使我不知道我是怎么做到的哈哈...