我查资料SQL语法大概有
Transact-SQL、MYSQL, SQL Server, Oracle, PostgreSQL语法表述方法。
为什么要提这个问题,在实际操作遇到的问题如下。
语法错误(操作符丢失),查寻表达式'A.图号= b.图号 OUTER JOIN ELLIPSE as c on A.图号= c.图号 '中
问题解决是括号问题
sql = "SELECT c.E_EntName,a.图号,A.件号 FROM ((Equipment_Material as a " + _
          "INNER JOIN ELLIPSE as b on A.图号= b.图号) " + _
          "OUTER JOIN shell as c on A.图号= c.图号) "
加了两个括号错误提示就解决:
   “出现语法错误(操作符丢失)”,找了上述SQL语法资料,没有一本书讲这个问题的解决方法是“括号问题”,而在实际操作中,“出现语法错误(操作符丢失)”的直接原因是括号问题,从人的惯性思维查找资料几何无解。因此,我提的这个问题是,VB+ACCESS使用的SQL语法,到底是哪种SQL语法表述方法??

解决方案 »

  1.   

    SQL的语法只有一种,只是针对不同的SQL数据库产品稍微有些不同罢了。http://community.csdn.net/Expert/TopicView.asp?id=5307219
      

  2.   

    把加括号前的sql debug.print出来,在把加括号后的sql debug.print出来对比一下再查查sql的语法你就知道原因了我不清楚你的业务逻辑,但按你上面构造的那条查询语句,加括号前跟加括号后根本就是两回事
    括号是个好东西,对理顺关系很有帮助。。
      

  3.   

    我就想知道在SQL中使用括号的细节问题,我会针对你讲述的要点去找相关资料.
    谢谢
      

  4.   

    我现在基本知道我提的问题的关键,SQL(MDB)方式查询,首先要把Access的SQL搞清.
    相关地址http://edu.itbulo.com/200605/99323.htm
      

  5.   

    找到资料了,明白了我提的问题应该定义为JET SQL语法格式.
    除函数以外JET SQL与T-SQL的一些明显区别
    专题地址:
    http://access911.net/?kbid;72FABE1E11DCE7F3
    函数有什么调整可以看
        access升级到SQLServer如何调整字段类型及函数。JET SQL T-SQL同义词《ADP...
        http://access911.net/index.asp?u1=a&u2=73FAB11E14DC1、JET SQL 对日期的撰写两边用 # 号,T-SQL 用 ' 号
    Jet SQL 示例:
    select * from [table] where [date field] >=#2006-1-1#
    T-SQL 示例:
    select * from [table] where [date field] >='2006-1-1'2、多层套嵌时 JET SQL 必须将 SELECT 子句用括号 ( ) 一层一层包含起来,而 T-SQL 没有此规定
    Jet SQL 示例:
    select [table1].[field1],[table2].[field4],[table3].[field3],[table4].[field4] 
    from ((([table1] left join [table2] on [table1].[field1]=[table2].[field1]) 
        left join [table3] on [table1].[field1]=[table3].[field1]) 
        left join [table4] on [table1].[field1]=[table4].[field1])
    T-SQL 示例:
    select [table1].[field1],
           [table2].[field4],
           [table3].[field3],
           [table4].[field4] 
    from [table1] left join [table2] on [table1].[field1]=[table2].[field1] 
                  left join [table3] on [table1].[field1]=[table3].[field1]
                  left join [table4] on [table1].[field1]=[table4].[field1]
    3、JET SQL 只允许单句的 SQL 语句出现,";"分号是JET SQL 语句的最后一个字符,后面不允许再出现其他字符;而 T-SQL 查询分析器或用ADO执行T-SQL语句时可以连续执行两句,两句之间可以用分号间隔。
    4、T-SQL 支持用 "--" 两个连字符在 T-SQL 语句中进行注释;JET SQL 语句不支持注释
    5、T-SQL 的 UPDATE set 子句中允许用括号中的select 语句的返回值;在JET SQL 不支持,但可以用域函数
    T-SQL 示例:
    update [table] set [field] = (select top 1 [field2] from [table2] order by [field3])
    JET-SQL 示例:
    update [table] set [field] = dmax("field2","table2")
    在多个环境中 T-SQL 中都允许用 () 括号中返回单一值的 SELECT 语句代替某个固定值,而JET SQL 语句中一般都使用域函数解决
    T-SQL 示例:
    select [field1],(select top 1 [field3] from [table3] where [field2]=15) as newfield from [table1]
    jet-sql 示例:
    select [field1],dlookup("field3","table3","field2=15") as newfield from [table1]