如何从相关 table 的同一字段回显值

How to echo values from the same field of the related table

我有两个相关的 table:包含 3 列的合同:ContractsID、AreaManager 和 AreaLeader。然后我有 Employees table 和 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

但是,查询不起作用。我相信我应该使用 table 别名,但我有点为此苦苦挣扎。

我试过了,但没用:

$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

如有任何帮助,我们将不胜感激!

您对第二个查询的方法是正确的,但其中存在语法错误。您的查询看起来像这样:

$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"

你原来的查询不起作用的原因是因为你用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.