У меня есть две связанные таблицы: Контракты с 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
Любая помощь будет принята с благодарностью!
Причина, по которой ваш оригинальный запрос не работает, заключается в том, что вы 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
,
У вас правильный подход ко второму запросу, но в нем есть синтаксическая ошибка. Ваш запрос будет выглядеть примерно так:
$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"