【问题标题】:SQL error Statement, Missing OperatorSQL 错误语句,缺少运算符
【发布时间】:2016-04-28 11:49:55
【问题描述】:

这句话有什么问题吗?

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

当我在 Access 上运行它时,我得到一个语法错误“缺少运算符”。 还有任何替代 Access 的方法可以从 Excel 电子表格导入数据吗?

【问题讨论】:

  • MS Access 有一个棘手的方法来连接超过 2 个表。以某种方式使用括号。

标签: sql ms-access


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我在完成设计版本后发现,然后进入 SQL 视图,它有额外的括号。感谢您的帮助。
【解决方案2】:

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

How to enable Ad Hoc Distributed Queries

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

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

【讨论】:

    【解决方案3】:

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

    • 逗号分隔值 (CSV)
    • XML

    在许多情况下,您可以直接处理 Excel 电子表格中的数据。 这真的取决于你想做什么。

    您的 SQL 查询看起来不错 - 但使用 Access,您需要在括号中进行额外的连接;

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多