2016-04-28 162 views
0

此聲明有什麼問題嗎?SQL錯誤聲明,缺少操作員

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

當我在Access上運行它時,我得到一個語法錯誤'Missing Operator'。 也有任何替代Access,我可以從Excel電子表格導入數據?

+0

MS Access有一個棘手的方法來加入超過2個表。以某種方式使用括號。 – jarlh

回答

2

一般來說,沒有。在MS Access中,是的。它喜歡額外的括號,可能是因爲數據庫開發人員不相信可讀性:

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

謝謝,我在做了設計版本之後發現,然後進入SQL視圖,並且它有額外的括號。感謝幫助。 – Simon

0

您可以啓用OPENROWSET如果你有SQL的本地實例,並安裝MDACs(我會同時安裝x86和x64,如果你有一個64位電腦)。以下是一篇文章的鏈接,可幫助您進行設置。另外,請確保以提升的權限運行管理工作室。

How to enable Ad Hoc Distributed Queries

下面是查詢會是什麼樣。在我的例子我使用Excel 8.0,而不是12,因爲列名在我的select語句可尋址的8

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
        'Excel 8.0;Database=C:\Temp\MyExcelDoc.xlsx;', 
        'SELECT * FROM [Sheet1$]') 
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) 
;