Как вывести значения из того же поля связанной таблицы

У меня есть две связанные таблицы: Контракты с 3 столбцами: ContractsID, AreaManager и AreaLeader. Затем у меня есть таблица сотрудников с 2 столбцами: EmployeesID, EmployeeName. EmployeeID является внешним ключом для AreaManager и AreaLeader. Я пытаюсь создать запрос SELECT, чтобы повторить ContractID, имя менеджера области и имя лидера области.

Это то, что у меня есть;

$query = "SELECT Contracts.ContractsID, Contracts.AreaLeader, Contracts.AreaManager, Employees.EmployeeName FROM Contracts
INNER JOIN Employees ON Employees.EmployeeID = Contracts.AreaManager
INNER JOIN Employees ON Employees.EmployeeID = Contracts.AreaLeader

Тем не менее, запрос не работает. Я считаю, что я должен использовать псевдонимы таблиц, но я как бы борюсь с этим.

Я попробовал это, но это не сработало:

$query = "SELECT c.ContractsID, m.Employees.EmployeeName as ManagerName, l.Employees.EmployeeName as LeaderName

FROM c.Contracts

JOIN Employees m ON m.EmployeeID = c.AreaManager

JOIN Employees l ON l.EmployeeID = c.AreaLeader

Любая помощь будет принята с благодарностью!

1

Решение

Причина, по которой ваш оригинальный запрос не работает, заключается в том, что вы Employees дважды, и вам нужно их псевдоним, чтобы сделать различие.

$query = "SELECT Contracts.ContractsID, Contracts.AreaLeader, Contracts.AreaManager, Employees.EmployeeName FROM Contracts
INNER JOIN Employees Employee1 ON Employee1.EmployeeID = Contracts.AreaManager
INNER JOIN Employees Employee2 ON Employee2.EmployeeID = Contracts.AreaLeader

Вам не нужен псевдоним Contracts если вы не хотите сделать это.

Ваш второй запрос не выполнен, потому что вы не указали псевдоним Contracts должным образом. Вы должны были поставить Contracts c вместо c.Contracts,

1

Другие решения

У вас правильный подход ко второму запросу, но в нем есть синтаксическая ошибка. Ваш запрос будет выглядеть примерно так:

$query = "SELECT c.ContractsID, m.EmployeeName as ManagerName, l.EmployeeName as LeaderName
FROM Contracts c
JOIN Employees m ON m.EmployeeID = c.AreaManager
JOIN Employees l ON l.EmployeeID = c.AreaLeader"
1