显示与使用 Access 查询 MIN() 函数检索到的记录关联的其他字段
Show other field(s) associated with record retrieved with Access query MIN() function
我正在使用以下查询:
SELECT [ActionItems].AutoID, Min([ActionItems].[Action Status]) AS [MinOfAction Status]
FROM [ActionItems]
GROUP BY [ActionItems].AutoID;
我为字段 [Action Status]
设置了自定义排序,这个名为“最紧急的行动项目”的查询应该检索对于任何给定的 AutoID( AutoID 与主要 table ([Students]
) 中的相同;如果有意义,此 [ActionItems]
table 是次要的)。
好吧,它有效。但是 [AutoID]
字段本身没有帮助——它只能将它与主 table 中的记录相匹配。我还需要为它提取的每条记录显示 table [ActionItems]
中的唯一 [ID]
,因为 [Action Status]
不是唯一的(只有三个可能的值)。我尝试使用“Group By”或“Expression”甚至“MAX”添加 [ID]
字段,但 none return 想要的结果:
- “分组依据”然后显示任何给定
[AutoID]
的所有记录,即
没有帮助。
- “表达式”return错误
Your query does not include the specified expression 'ID' as part of an aggregate function.
- "MAX" 将只显示每个
[AutoID]
的一条记录(根据需要!),但 [ID]
不一定与正确的 [Action Status]
匹配,所以它不是也有帮助。
如果可能的话,我真的希望显示的不仅仅是 [ID]
字段,但我认为这至少足以将此查询用作其他更广泛查询的帮助程序。
我怀疑子查询可能有用,但这是一个非常陌生的领域......我确实在这里发现了一些其他类似的问题,但我找不到任何以我能理解的方式解释答案的问题。
我希望一切都有意义;非常感谢任何帮助。
编辑:经过更多搜索,我发现这与这个问题几乎相同:MS Access SQL: Aggregating on Min Value but retrieving other fields
我会继续尝试想出一个解决方案,如果我这样做的话,我会post在这里,但如果社区认为这应该作为重复关闭,我理解。
这是我用来获得所需结果的代码:
SELECT T.AutoID, T.[Most Urgent Action Status], A.[ID]
FROM
(
SELECT AutoID, Min([Action Status]) as [Most Urgent Action Status]
from [ActionItems]
GROUP BY AutoID
) as T
INNER JOIN [ActionItems] A ON T.AutoID = A.[AutoID] AND T.[Most Urgent Action Status] = A.[Action Status]
我不知道描述这里发生的事情的正确术语,但在我看来我只是将常规查询加入子查询,子查询基本上就是我在问题中提到的那个。
确认这显示了我想要的内容后,我进行了第二次查询,将 [ActionItems]
table 加入到 [AutoID]
和 [ID]
字段上的此查询;我还从连接添加了一些其他传记信息到主要 table 以获得更多上下文。
再一次,这基本上是这个问题答案的修改版本:MS Access SQL: Aggregating on Min Value but retrieving other fields
现在我明白了它是如何工作的,它看起来很直观。我希望这对其他人有帮助!
我正在使用以下查询:
SELECT [ActionItems].AutoID, Min([ActionItems].[Action Status]) AS [MinOfAction Status]
FROM [ActionItems]
GROUP BY [ActionItems].AutoID;
我为字段 [Action Status]
设置了自定义排序,这个名为“最紧急的行动项目”的查询应该检索对于任何给定的 AutoID( AutoID 与主要 table ([Students]
) 中的相同;如果有意义,此 [ActionItems]
table 是次要的)。
好吧,它有效。但是 [AutoID]
字段本身没有帮助——它只能将它与主 table 中的记录相匹配。我还需要为它提取的每条记录显示 table [ActionItems]
中的唯一 [ID]
,因为 [Action Status]
不是唯一的(只有三个可能的值)。我尝试使用“Group By”或“Expression”甚至“MAX”添加 [ID]
字段,但 none return 想要的结果:
- “分组依据”然后显示任何给定
[AutoID]
的所有记录,即 没有帮助。 - “表达式”return错误
Your query does not include the specified expression 'ID' as part of an aggregate function.
- "MAX" 将只显示每个
[AutoID]
的一条记录(根据需要!),但[ID]
不一定与正确的[Action Status]
匹配,所以它不是也有帮助。
如果可能的话,我真的希望显示的不仅仅是 [ID]
字段,但我认为这至少足以将此查询用作其他更广泛查询的帮助程序。
我怀疑子查询可能有用,但这是一个非常陌生的领域......我确实在这里发现了一些其他类似的问题,但我找不到任何以我能理解的方式解释答案的问题。
我希望一切都有意义;非常感谢任何帮助。
编辑:经过更多搜索,我发现这与这个问题几乎相同:MS Access SQL: Aggregating on Min Value but retrieving other fields
我会继续尝试想出一个解决方案,如果我这样做的话,我会post在这里,但如果社区认为这应该作为重复关闭,我理解。
这是我用来获得所需结果的代码:
SELECT T.AutoID, T.[Most Urgent Action Status], A.[ID]
FROM
(
SELECT AutoID, Min([Action Status]) as [Most Urgent Action Status]
from [ActionItems]
GROUP BY AutoID
) as T
INNER JOIN [ActionItems] A ON T.AutoID = A.[AutoID] AND T.[Most Urgent Action Status] = A.[Action Status]
我不知道描述这里发生的事情的正确术语,但在我看来我只是将常规查询加入子查询,子查询基本上就是我在问题中提到的那个。
确认这显示了我想要的内容后,我进行了第二次查询,将 [ActionItems]
table 加入到 [AutoID]
和 [ID]
字段上的此查询;我还从连接添加了一些其他传记信息到主要 table 以获得更多上下文。
再一次,这基本上是这个问题答案的修改版本:MS Access SQL: Aggregating on Min Value but retrieving other fields
现在我明白了它是如何工作的,它看起来很直观。我希望这对其他人有帮助!