访问查询帮助(查询查询)

时间:2013-06-27 14:01:23

标签: sql ms-access

我正在处理一个查询,它让我很难过。

我有一个包含大量提案的表格,并且它们的创建日期为提案添加到数据库的时间。我想根据用户选择状态进行查询,然后查询仅显示最近创建的提案。

示例:

我有4个提案。 2来自特拉华州于2013年1月1日和2013年1月1日创建。其他2个提案来自于2013年1月3日和2014年1月4日创建的马里兰州。如果用户在特拉华州输入,则应在2013年1月1日显示提案,但如果用户在马里兰州输入,则应在2013年1月1日显示提案。

首先,我尝试了这个

SELECT *
FROM Opportunity
WHERE (((Opportunity.CreationDate)=
    (select max(Opportunity.CreationDate) from Opportunity)));

这很有效,它向我展示了一个拥有最新日期的机会。所以,那是一半的战斗。但当我试图指定一个州是我遇到麻烦的地方。它是Access,所以我想创建一个查询,提示用户状态,然后进入第二个查询,查询最大日期字段的结果将起作用,但它没有。 所以,我现在拥有的是:

查询1

Select * FROM Opportunity并出现一个弹出框,询问用户状态。然后显示该状态的所有结果。

查询2

SELECT * FROM OpportunityByState WHERE (((OpportunityByState.CreationDate)=(select max(Opportunity.CreationDate) from Opportunity)));

注意:我在发布之前编辑了SQL以使用所有字段符号(*),因为Access写出了每个字段,其中大约有60个,所以我认为没有人会想看到那个文本墙

任何建议都会很棒,我希望我提供了足够的信息。

1 个答案:

答案 0 :(得分:1)

通过弹出框我假设你指的是一个访问参数。在这种情况下,以下内容将显示在出现的参数框中输入的状态的最新记录。 (我在我的示例数据库中使用了一些字段名称。)

SELECT TOP 1 FirstName, Surname, Office, StartDate 
FROM Opportunity 
WHERE State=[Which State] 
ORDER BY CreationDate DESC;

它按CreationDate的降序对记录进行排序,并抓取第一个记录。但是,如果有多个记录具有相同的日期,则会返回所有这些记录。 (这是TOP n在Access中的行为方式 - 它不能解决重复问题。)