2016-04-28 2 views
0

Есть ли что-то не так с этим утверждением?Заявление об ошибке SQL, пропавший оператор

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

Когда я запускаю его в Access, я получаю синтаксическую ошибку «Отсутствующий оператор». Также есть ли какие-либо альтернативы доступу, чтобы я мог импортировать данные с листа расширенного расширения?

+0

MS Access имеет сложный способ объединения более двух таблиц. Скопируйте скобки. – 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, так как имена столбцов адресуются в моих отборных заявлений на 8

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

Вы можете экспортировать данные из таблицы первенствовать в различных форматах. Я нахожу двух из лучших;

  • Значения, разделенные запятыми (CSV)
  • XML

Во многих случаях, вы можете иметь дело с данными непосредственно из таблицы Excell. Это действительно зависит от того, что вы хотите сделать.

Ваш SQL-запрос выглядит нормально - но с Access вам нужно сделать дополнительные объединения в скобках;

SELECT * FROM ((Movies 
INNER JOIN Sessions ON Movies.MovieID=Sessions.MovieID) 
INNER JOIN Tickets ON Sessions.SessionID=Tickets.SessionID) 
; 
Смежные вопросы