我知道在MySQL上,我们可以通过为每个表赋予自己的别名来两次连接同一张表,但这似乎不适用于Access。
例如:
SELECT d.departmentID, d.depName, d.location, c1.memberID, c1.fullName, c1.reportsTo, c2.fullName
FROM Departments as d
INNER JOIN Contacts as c1
ON c1.departmentID = d.departmentID
INNER JOIN Contacts as c2
ON c1.reprtsTo = c2.memberID
这样做给我一个语法错误。有谁知道我可以如何加入同一张表(“联系人”)以获取成员向其报告的人的名字(c2.fullName)?
更新,我遇到的错误:
查询表达式“ c1.departmentID = d.departmentID INNER JOIN”中的语法错误(缺少运算符),联系人作为c2 ON c1.reportsTo = c2.memberI'。
答案 0 :(得分:4)
在MS Access中,多个JOIN
需要使用括号配对:
SELECT d.departmentID, d.depName, d.location, c1.memberID,
c1.fullName, c1.reportsTo, c2.fullName
FROM (Contacts as c1
INNER JOIN Departments as d
ON c1.departmentID = d.departmentID)
INNER JOIN Contacts as c2
ON c1.reprtsTo = c2.memberID
答案 1 :(得分:1)
只需将表拖入可视编辑器两次。它会自动将表的第二个实例重命名为“ _1”。
SELECT Contacts.EmpID, Contacts_1.EmpID AS reportsTo
FROM Contacts INNER JOIN Contacts AS Contacts_1 ON Contacts.SupervisorID=
Contacts_1.EmpID;
答案 2 :(得分:1)
在这种情况下,让Access设计编辑器处理联接和别名会更容易。
以下代码基于您的代码,但由设计编辑器创建:
SELECT
Departments.departmentID, Departments.depName, Departments.location,
Contacts.memberID, Contacts.fullName, Contacts_1.reportsTo, Contacts_1.fullName
FROM (
Departments INNER JOIN Contacts ON Departments.departmentID = Contacts.departmentID
) INNER JOIN Contacts AS Contacts_1 ON Contacts.reportsTo = Contacts_1.memberID;