Как дважды присоединиться к одному столу в Access - PullRequest
0 голосов
/ 15 января 2019

Я знаю, что в 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'.

Ответы [ 3 ]

0 голосов
/ 15 января 2019

просто перетащите таблицу в визуальный редактор дважды. Второй экземпляр таблицы автоматически переименовывается в «_1».

SELECT Contacts.EmpID, Contacts_1.EmpID AS reportsTo
FROM Contacts INNER JOIN Contacts AS Contacts_1 ON Contacts.SupervisorID= 
Contacts_1.EmpID;
0 голосов
/ 15 января 2019

В таких случаях проще позволить редактору дизайна 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;
0 голосов
/ 15 января 2019

В 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...