отключить скобки в SQL-запросах доступа - PullRequest
2 голосов
/ 25 августа 2009

есть ли способ указать ms доступ (2003) к не положить соединения в скобках. или, по крайней мере, понять их без (любая другая база данных)

я хочу что-то вроде:

    SELECT *
      FROM a
INNER JOIN b
        ON a.a = b.a
INNER JOIN c
        ON b.c = c.c

но access говорит мне, что запрос неверный. ЭТО НЕТ, и это сводит меня с ума ...

он также помещает все объединения в одну строку - невозможно прочитать

спасибо заранее.

пс. я уже активировал совместимость / поддержку ANSI 92 в настройках

Ответы [ 3 ]

2 голосов
/ 01 сентября 2009

См. Справку Access О режиме запросов ANSI SQL (MDB) .

Этот режим соответствует Спецификация ANSI-92 уровня 1, но есть не соответствует стандарту ANSI-92 уровня 1.

Для "ANSI-92" читать "ANSI / ISO SQL-92" (а для "соответствует" читать "смутно похоже").

Итог: вы должны включить скобки. Обратите внимание, что оптимизатор ядра СУБД Access может изменять порядок таблиц по своему усмотрению.

2 голосов
/ 25 августа 2009

К сожалению, нет. Access 2003 просто «тупой» в SQL. Это «неправильно» в том, что Access может анализировать только один JOIN, что приводит вас в бешенство (но также все еще правильно):

SELECT *
FROM a
INNER JOIN (b INNER JOIN c ON b.c = c.c)
    ON a.a = b.a
0 голосов
/ 25 августа 2009

Я только что попробовал совместимый с SQL Server синтаксис (ANSI 92) и проверил эту базу данных.

Я склонен настраивать все свои таблицы и объединения в построителе графических запросов, а затем настраивать их в редакторе SQL, обходя все скобки. Использование квадратных скобок также сводит меня с ума. Мне повезло, большинство приложений в моей фирме переносятся с Access на SQL Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...