SQL:语法错误(缺少运算符)
我一点也不擅长SQL 我在MS access数据库中有两个表SQL:语法错误(缺少运算符),sql,ms-access,Sql,Ms Access,我一点也不擅长SQL 我在MS access数据库中有两个表 |ID| Name |Surname|Postion| |EmpID|ManID| ---------------------------- ------------- |1 |Scrooge|McDuck |Manager| |3 |1 | |2 |Daisy |Duck |Manager| |7 |1 | |3 |Do
|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
到目前为止,我的代码看起来是这样的(我一直在网上查看它是如何完成的,以及为什么)
我知道这个问题已经得到了回答
但它似乎不起作用并产生错误:
语法错误(缺少运算符)
任何帮助都将不胜感激。MS Access对多个
连接有一个非典型要求,即它们被封装在嵌套的()
组中,如:
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我起初没有看到它,当我看到不起眼的错误“缺少操作员”时,我又回去扫描了它。非常感谢你,这非常有帮助。我将记住,在将来的Access中,我是否应该得到一个合适的数据库程序。@Darkstryrics会在您方便的时候尽早得到一个合适的:)我曾经在Access GUI中构建查询,以研究它如何布局所有的()
组,因为这对我来说没什么意义。我现在在等着看未来的雇主会用什么。在一次测试中,我得到了这个,以了解我的理解和研究技能。
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);