2013-06-27 255 views
1

我正在处理一个查询,它困扰着我。访问查询帮助(查询查询)

我有一张有很多提案的表格,他们有一个创建日期,当提案被添加到数据库。我想基于用户选择状态进行查询,然后查询只显示最近创建的提议。

例如:

我有4个建议。 2013年1月1日和2013年2月1日创建的2个特拉华。另外两项建议来自马里兰州于2013年3月1日和2014年1月1日创建。如果用户输入特拉华州,那么它应该在2013年2月1日显示提案,但如果用户输入马里兰州,则应在2013年4月1日显示提案。

首先,我想这

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

这个工作,它让我有最新的日期1分的机会。所以,这是战斗的一半。但是当我试图指定一个状态是我有麻烦的地方。这是访问,所以我想创建一个查询,会提示用户的状态,然后进入第二个查询,将查询最大日期字段的结果将工作,但它没有。 所以,我现在拥有的是:

查询1

Select * FROM Opportunity,它有一个弹出框出现要求为国家的用户。然后显示该州的所有结果。

查询2

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

注:我编辑了SQL张贴在这里使用的所有字段号(*),因为访问写了每场前,有关于他们的60,所以我没别以为任何人都会想看到那段文字。

任何建议将是伟大的,我希望我提供了足够的信息。

回答

1

通过弹出框我假设你指的是访问参数。在这种情况下,以下内容将显示在出现的参数框中输入的州的最新记录。 (我用了几场名从我的样本数据库。)

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

它的订单下降了CreationDate的顺序记录,并抓住第一个。但是,如果同一日期有多个记录,则它将返回所有这些记录。 (这是TOP n在Access中的行为方式 - 它不能解析重复项。)

+1

减少所提及的重复项的一种简单(但不是保证)的方法是在CreationDate字段中存储日期和时间。然后,如果在同一日期和时间保存了两个或更多提案,则只会有重复。技术上可行,但不太可能。 – PowerUser

+0

谢谢@PowerUser。我想如果这被认为是对当前数据库的过于戏剧性的改变,那么可以创建一个额外的列来分别存储时间,并且日期和时间可以是在特定查询中需要的计算字段。 (只要时间包含在输出中,并且与创建日期一起对排序的DESC进行排序,则计算/添加可能不是必需的。) –