Php 如何从相关表的同一字段回显值
我有两个相关的表:包含3列的合同:ContractsID、AreaManager和AreaLeader。然后我有一个包含两列的EmployeesID和EmployeeName的Employees表。EmployeeID是AreaManager和AreaLeader的外键。我正在尝试创建一个SELECT查询来回显CONSTRACTID、区域经理的姓名和区域领导的姓名 这就是我所拥有的Php 如何从相关表的同一字段回显值,php,mysql,inner-join,alias,Php,Mysql,Inner Join,Alias,我有两个相关的表:包含3列的合同:ContractsID、AreaManager和AreaLeader。然后我有一个包含两列的EmployeesID和EmployeeName的Employees表。EmployeeID是AreaManager和AreaLeader的外键。我正在尝试创建一个SELECT查询来回显CONSTRACTID、区域经理的姓名和区域领导的姓名 这就是我所拥有的 $query = "SELECT Contracts.ContractsID, Contracts.AreaLea
$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
任何帮助都将不胜感激 第二个查询的方法是正确的,但其中有语法错误。您的查询如下所示:
$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"
原始查询不起作用的原因是,您与
员工加入了两次,并且需要为他们添加别名以进行区分
$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放在c
而不是c。Contracts
提供了一些示例数据和预期结果。我觉得你的第二个查询很好,除了分别为m.EmployeeName
和l.EmployeeName
的m.EmployeeName
和l.EmployeeName
的m.EmployeeName之外。您是否直接在mysql上运行查询?它返回结果了吗?您是如何决定该查询不起作用的?