2017-07-24 63 views
0

我有以下SQL查询,利用这个问题为导向,提出:How can an SQL query return data from multiple tablesMicrosoft Access中的这个SQL查询有什么问题?

SELECT 
    Parameters.[New Parameter Number], 
    Parameters.[New Parameter Name], 
    Files.[File Names], 
    Groups.[Group Names] 

FROM 
    (((FGEJunction a 
     INNER JOIN Parameters b ON a.idParameters = b.idParameters) 
     INNER JOIN Groups c ON a.idPrimaryGroup = c.idGroups 
     AND a.idSecondaryGroup = c.idGroups) 
     INNER JOIN Files d ON c.idFiles = d.idFiles) 

WHERE 
    Parameters.[New Parameter Number] 
     LIKE ([Forms]![Key word search parameters]![ParameterSearchBox].[Text] & "*") OR 
    Parameters.[New Parameter Name] 
     LIKE ([Forms]![Key word search parameters]![ParameterSearchBox].[Text] & "*") OR 
    Files.[File Names] 
     LIKE ([Forms]![Key word search parameters]![ParameterSearchBox].[Text] & "*") OR 
    Groups.[Group Names] 
     LIKE ([Forms]![Key word search parameters]![ParameterSearchBox].[Text] & "*"); 

当我把它在MS Access,按“运行”,它只是说“语法错误在FROM子句”。它还在FROM子句的第一行中突出显示了“参数”一词。这个词的意思是指一个名为“参数”的表格。

我是新来的SQL和Access,我不知道语法错误在哪里。

+0

你错过了'SELECT'。 – Eric

+3

Access要求各地各括号加入条款,所以它会像'FROM ((FGEJunction一个 JOIN参数B ON a.idParameters = b.idParameters) JOIN C组 ON a.idPrimaryGroup = c.idGroups AND a.idSecondaryGroup = c.idGroups) JOIN文件d ON c.idFiles = d.idFiles'。请注意,这是Access要求,“标准”SQL中不要求 –

+0

您是否使用查询生成器来帮助获取语法? – June7

回答

1

参数是一个关键字。如果你有一个带有这个名字的表,你需要用括号[Parameters]来包装它。

另外,您已为[参数]分配了名为b的别名。然后,您需要将其用作其他地方的名称。例如,您的选择部分应该看起来像这样...

SELECT 
    b.[New Parameter Number], 
    b.[New Parameter Name], 
    d.[File Names], 
    c.[Group Names] 

等等。

+0

如果我将该表称为SELECT语句中的别名,它将如何知道在哪里可以找到新的参数号? SQL是否从上到下执行......? – danielcg

+1

查询引擎解析您的查询并将其解决。 –