2013-07-28 44 views
1

此查询仅当为什么我得到“输入参数值”使用SELECT AS

SELECT P2.ID, P2.Storenum, [Periods_2013-2014].[PeriodDate] AS [OpenFromDate], 
    P2.[Open From Day], P2.[Open From Time], P2.[Open To Day], 
    P2.[Open To Time] 
FROM [Periods_2013-2014] 
INNER JOIN [tblOpenCloseTimes] AS P2 ON [Periods_2013-2014].[Day]=P2.[Open From Day] 
WHERE ((([Periods_2013-2014].Day)=P2.[Open From Day] 
    AND P2.Storenum ="43010605" 
    AND [Periods_2013-2014].Period = "4")) 

导致的“输入参数值”与Query1.PeriodDate作为请求的参数,而如果我只是删除“AS [OpenFromDate]”从第一行开始查询运行完美。如果我将[Periods_2013-2014]表别名为P1,它也会这样做。这不会是一个问题,除了我需要堆积查询来获得两倍的PeriodDate字段。我究竟做错了什么?


更新:此查询

SELECT T2.Storenum, T2.[PeriodDate] AS [Open From Date], T2.[Open From Day], 
T2.[Open From Time], T1.[PeriodDate] AS [Open To Date], T2.[Open To Day], 
T2.[Open To Time] 
FROM [Periods_2013-2014] AS T1, 
(SELECT P2.Storenum, P1.[PeriodDate], P2.[Open From Day], P2.[Open From Time], 
P2.[Open To Day], P2.[Open To Time] 
FROM [Periods_2013-2014] AS P1 INNER JOIN tblOpenCloseTimes AS P2 
ON P1.[Day]=P2.[Open From Day] 
WHERE (((P1.Day)=P2.[Open From Day] 
    AND P2.Storenum ="43010605" 
    AND P1.Period = "4")) 
ORDER BY P1.[PeriodDate]) AS T2 
WHERE T1.[Day]=T2.[Open To Day] 
AND T1.[PeriodDate]>=T2.[PeriodDate] 
AND T1.[PeriodDate] - T2.[PeriodDate] <7 
ORDER BY P1.[PeriodDate]; 

作品完美,现在我已经从属性表中删除ORDER BY子句。

+0

这是一个MS Access查询? –

+0

是的,是的MS Access –

+0

只是一个想法,MS访问SQL编辑器,它仍然会看到旧的语法,即使你已经更改了SQL,并抛出一个错误信息,如一个有时会抛出这个奇怪的错误你看到了。尝试创建一个新的查询并将语法粘贴到该查询中。如果我无意中对我查询(或如果该字段不存在完全)表拼错一个字段名我也遇到这样的错误信息很多。 – UberNubIsTrue

回答

2

Access不允许你在查询中使用字段别名。所以,我猜这个问题在你的Where条款中。

尝试删除名称:P2和使用全表的名称,以便您的说法是这样的:

SELECT [tblOpenCloseTimes].ID, [tblOpenCloseTimes].Storenum, [Periods_2013-2014].[PeriodDate] AS [OpenFromDate], 
    [tblOpenCloseTimes].[Open From Day], [tblOpenCloseTimes].[Open From Time], [tblOpenCloseTimes].[Open To Day], 
    [tblOpenCloseTimes].[Open To Time] 
FROM [Periods_2013-2014] 
INNER JOIN [tblOpenCloseTimes] ON [Periods_2013-2014].[Day]=[tblOpenCloseTimes].[Open From Day] 
WHERE ((([Periods_2013-2014].Day)=[tblOpenCloseTimes].[Open From Day] 
    AND [tblOpenCloseTimes].Storenum ="43010605" 
    AND [Periods_2013-2014].Period = "4")) 

我想知道为什么你的表之一,但不是其他使用别名。对列名使用别名很好。但是,这些别名不应在Where子句中使用。

此外,您可以参考下面的链接了解详情:

+0

我用方括号中的全表名替换了所有的别名。在同等条件下发生同样的错误 - 只有当我使用AS子句 –

+0

请使用AS子句仅供列。请尝试在整个查询中不使用任何别名,然后尝试仅对列使用别名。 –

+0

我保存并关闭了查询,然后重新打开它,现在它总是询问参数值。我复制并粘贴了你的查询,并且总是询问参数值。 –

相关问题