查询列出要打开的商店

时间:2016-10-17 19:04:11

标签: sql ms-access

我正在尝试编写一个查询,确定列表中的哪些商店需要在数据库中“打开”。

我有一个“商店详细信息”表,其中列出了商店的开放日期,还有一个“Fiscal_Periods”表,其中列出了该会计期间要开立的资格的开始日期和结束日期。我需要生成一个有资格在此期间打开的商店列表。

SELECT [Store Details].[Store Number], [Store Details].[Store Name], [Store Details].[Open Date], [Store Details].[Closed Date], [Fiscal_Periods].[EligibilityStart], [Fiscal_Periods].[EligibilityEnd]
FROM [Store Details]
WHERE ([Store Details].[Open Date] >=Fiscal_Periods.[EligibilityStart]) AND ([Store Details].[Open Date]<= [Fiscal_Periods].[EligibilityEnd]);

如何使语句将EligibilityStart和EligibilityEnd与之前Fiscal_Period中的日期进行比较?

2 个答案:

答案 0 :(得分:1)

在WHERE子句中,您没有指定您要用于比较的fiscal_period表中的哪个Entry。在下面的代码中,我取最后一行,其中当前日期在Fiscal_Period的Start和EndDate之间,并与之比较:

SELECT [Store Details].[Store Number], [Store Details].[Store Name], [Store Details].[Open Date], [Store Details].[Closed Date], [Fiscal_Periods].[EligibilityStart], [Fiscal_Periods].[EligibilityEnd]
FROM [Store Details]
WHERE 
(([Store Details].[Open Date])>=DLast("EligibilityStart","Fiscal_Periods","(((EndDate)>Now()) AND ((StartDate)<Now()))"))
AND
(([Store Details].[Closed Date])<=DLast("EligibilityEnd","Fiscal_Periods","(((EndDate)>Now()) AND ((StartDate)<Now()))"));

当您下次询问并获得上述提示时,请显示您拥有的内容。特别是如果您已经向question询问了确切数量。

答案 1 :(得分:1)

我通过开发一个首先确定先前会计期间的查询,然后创建使用第一个查询结果的第二个查询来找出解决方案。

SELECT [Store Details].*, *
FROM [Store Details], PriorPeriod
WHERE ((([Store Details].[Open Date])>=[PriorPeriod].[EligibilityStart] And ([Store Details].[Open Date])<=[PriorPeriod].[EligibilityEnd]));