代码之家  ›  专栏  ›  技术社区  ›  knittl

禁用Access SQL查询中的括号

  •  2
  • knittl  · 技术社区  · 15 年前

    有没有办法告诉MS Access(2003) 将连接放入括号中。或者至少在没有其他数据库的情况下理解它们。

    我想要这样的东西:

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

    但是Access告诉我查询是错误的。不是,它让我发疯

    它还将所有联接放在一行中,无法读取

    事先谢谢。

    ps.i已经在设置中激活了ansi 92兼容性/支持

    3 回复  |  直到 13 年前
        1
  •  2
  •   VoteyDisciple    15 年前

    遗憾的是,没有。Access2003对于SQL来说就是那么的“愚蠢”。这是“错误的”,因为访问只能解析一个联接,这会让您感到恼火(但仍然是正确的):

    SELECT *
    FROM a
    INNER JOIN (b INNER JOIN c ON b.c = c.c)
        ON a.a = b.a
    
        2
  •  2
  •   onedaywhen    15 年前

    查看访问帮助 About ANSI SQL query mode (MDB) .

    此模式与 ANSI-92 1级规范,但 不符合ANSI-92 1级。

    对于“ansi-92”,请阅读“ansi/iso sql-92”(对于“与”read“非常相似”)。

    底线:你必须包括括号。注意,Access数据库引擎的优化器可能会根据需要更改表的顺序。

        3
  •  0
  •   JeffO    15 年前

    我刚刚尝试了SQL Server Compantable语法(ANSI92),并检查了这个数据库。

    我倾向于在图形查询生成器中设置所有表和联接,然后在SQL编辑器中自定义,同时处理所有括号。方括号的使用也让我疯狂。我很幸运,我公司的大多数应用程序都是从访问SQL Server迁移过来的。