SQL错误语句,缺少运算符

时间:2016-04-28 11:49:56

标签: sql ms-access

这句话有什么不对吗?

SELECT * 
FROM Movies INNER JOIN
     Sessions
     ON Movies.MovieID=Sessions.MovieID INNER JOIN
     Tickets
     ON Sessions.SessionID=Tickets.SessionID;

如果我在Access上运行它,我会收到语法错误' Missing Operator'。 还有Access的替代品,我可以从excel电子表格中导入数据吗?

3 个答案:

答案 0 :(得分:2)

一般来说,没有。在MS Access中,是的。它喜欢额外的括号,可能是因为数据库开发人员不相信可读性:

SELECT * 
FROM (Movies INNER JOIN
      Sessions
      ON Movies.MovieID = Sessions.MovieID
     ) INNER JOIN
     Tickets
     ON Sessions.SessionID = Tickets.SessionID;

答案 1 :(得分:0)

如果你有一个本地SQL实例,你可以启用OPENROWSET,并安装MDAC(如果你有一个64位的pc,我会安装x86和x64)。以下链接指向可帮助您进行设置的文章。此外,请务必使用提升的权限运行管理工作室。

How to enable Ad Hoc Distributed Queries

以下是查询的外观。在我的示例中,我使用Excel 8.0而不是12,因为列名在8的select语句中是可寻址的。

  SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                   'Excel 8.0;Database=C:\Temp\MyExcelDoc.xlsx;', 
                   'SELECT * FROM [Sheet1$]') 

答案 2 :(得分:0)

您可以将Excel电子表格中的数据导出为多种格式。我找到了两个最好的;

  • 逗号分隔值(CSV)
  • XML

在许多情况下,您可以直接从Excell电子表格处理数据。 这实际上取决于你想做什么。

您的SQL查询看起来很好 - 但是使用Access,您需要在括号中执行额外的连接;

SELECT * FROM ((Movies 
INNER JOIN Sessions ON Movies.MovieID=Sessions.MovieID)
INNER JOIN Tickets ON Sessions.SessionID=Tickets.SessionID)
;