2016-04-28 21 views
0

Gibt es etwas Falsches an dieser Aussage?SQL-Fehlererklärung, fehlender Operator

Wann immer ich es auf Zugriff ausführen bekomme ich einen Syntaxfehler 'Fehlender Operator'. Gibt es auch Alternativen zu Access, dass ich Daten von einem Excel-Tabellenblatt importieren kann?

+0

MS Access hat eine knifflige Möglichkeit, mehr als 2 Tabellen zu verbinden. Verwenden Sie Klammern irgendwie. – jarlh

Antwort

2

In der Regel keine. In MS Access, ja. Es mag zusätzliche Klammern, wahrscheinlich, weil die Datenbank-Entwickler glauben nicht an Lesbarkeit:

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

Danke, ich fand das heraus, nachdem ich die Design-Version gemacht hatte und ging dann in die SQL-Ansicht und es hatte zusätzliche Klammern. Danke für die Hilfe. – Simon

0

Sie könnten OPENROWSET aktivieren, wenn Sie eine lokale Instanz von SQL haben, und installieren MDACs (I, wenn Sie sowohl x86 und x64 installieren würde Habe einen 64 Bit PC). Unten finden Sie einen Link zu einem Artikel, der Ihnen bei der Einrichtung hilft. Stellen Sie außerdem sicher, dass das Verwaltungsstudio mit erhöhten Rechten ausgeführt wird.

How to enable Ad Hoc Distributed Queries

Unten ist, wie die Abfrage aussehen würde. In meinem Beispiel verwende ich Excel 8.0 anstelle von 12, weil die Spaltennamen in meinen select-Anweisungen adressierbar sind für 8.en

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

Sie Daten aus einer Excel-Tabelle in eine Reihe von Formaten exportieren. Ich finde zwei der Besten zu sein;

  • Comma Separated Values ​​(CSV)
  • XML

In vielen Fällen können Sie mit den Daten befassen sich direkt aus der Excell-Tabelle. Es hängt wirklich davon ab, was Sie tun möchten.

Ihre SQL-Abfrage sieht gut aus - aber mit Access müssen Sie die zusätzlichen Joins in Klammern machen;

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