SQL:语法错误(缺少运算符)

Posted

技术标签:

【中文标题】SQL:语法错误(缺少运算符)【英文标题】:SQL: Syntax error (Missing operator) 【发布时间】:2014-06-11 13:45:11 【问题描述】:

我一点也不擅长 SQL

我在 MS Access 数据库中有两个表

|ID| Name  |Surname|Postion|           |EmpID|ManID|
----------------------------           ------------- 
|1 |Scrooge|McDuck |Manager|           |3    |1    |
|2 |Daisy  |Duck   |Manager|           |7    |1    |
|3 |Donald |Duck   |Support|           |6    |2    | 
|4 |Minny  |Mouse  |Support|           |4    |2    |
|5 |Mickey |Mouse  |Support|           |2    |1    |
|6 |Goofy  |       |Support|           |1    |2    |
|7 |Pluto  |       |Support|           |5    |2    |
|8 |Huey   |Duck   |Support|
|9 |Dewey  |Duck   |Support|
|10|Louie  |Duck   |Support|

我需要编写一条 SQL 语句来产生以下输出

| Name  |Surname|Postion|Manager Name|Manager Positon|          
------------------------            
|Donald |Duck   |Support|Scrooge     |Manager         
|Pluto  |       |Support|Scrooge     |Manager         
|Goofy  |       |Support|Daisy       |Manager        
|Minny  |Mouse  |Support|Daisy       |Manager       
|Daisy  |Duck   |Support|Scrooge     |Manager        
|Scrooge|McDuck |Manager|Daisy       |Manager        
|Mickey |Mouse  |Manager|Daisy       |Manager 

到目前为止,我的代码看起来像这样(我一直在网上查看它是如何完成的以及为什么)

SELECT Employee.Name,Employee.Surname,Employee.Position,Manager.Name as ManagerName
FROM Employee
INNER JOIN Stafflink ON Employee.ID=Stafflink.EmpID
INNER JOIN Employee Manager ON Manager.ID=Stafflink.ManID;

我知道问题已在Sql table output 中得到解答

但它似乎不起作用并产生错误:

语法错误(缺少运算符)

任何帮助将不胜感激。

【问题讨论】:

您的标题说语法错误,但您的问题说“似乎不起作用”。你想完成什么,你面临什么问题? 我正在尝试将输出转换为所示格式,最后一行是给出错误的行。如果我取出,系统会要求我输入经理的姓名,并以正确的格式输出。查询的最后一行是获取经理的名字,这就是我面临的问题。 【参考方案1】:

MS Access 对多个 JOINs 有一个非典型要求,即它们被包含在嵌套的 () 组中,例如:

FROM
  ((t1 INNER JOIN t2 ON t1.id = t2.id)
     INNER JOIN t3 ON t2.id = t3.id)

您的FROM 子句应表示为:

SELECT Employee.Name,Employee.Surname,Employee.Position,Manager.Name as ManagerName
FROM ((
  Employee
  INNER JOIN Stafflink ON Employee.ID=Stafflink.EmpID)
  INNER JOIN Employee Manager ON Manager.ID=Stafflink.ManID);

【讨论】:

在阅读问题时,ms-access 我的眼睛显然让我失望了。 @bluefeet 起初我错过了它,当我看到无法描述的错误“Missing operator”时回去扫描它。 非常感谢,这对您很有帮助。如果我没有合适的数据库程序,我会记住 Access 的未来。 @Darkestlyrics 在您方便的时候尽早获得一个合适的 :) 我曾经在 Access GUI 中构建查询以研究它如何布置所有 () 组,因为它对我来说几乎没有意义。 我目前正在等待看看未来的雇主会使用什么。我在测试中得到了这个,以了解我的理解和研究技能。

以上是关于SQL:语法错误(缺少运算符)的主要内容,如果未能解决你的问题,请参考以下文章

查询包含多个 JOIN 时访问 SQL 语法错误(缺少运算符)

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)

Access 2010:查询表达式中的语法错误(缺少运算符)

查询表达式中的语法错误(缺少运算符)“

查询表达式中的语法错误(缺少运算符)

访问中的 SQL 更新语句的语法错误