mysql中where子句在同一列上的多个联接不起作用

时间:2019-06-12 12:26:56

标签: mysql

我有两个表-车辆和员工。

车辆具有两个字段-1)所有者(指员工ID)2)Assigned_to :(指员工ID)。

我想创建一个拥有者并分配给名字的报告。当我删除where子句时,以下查询有效,但使用where子句则错误为

  

where子句中的未知列O.firstname。

SELECT V.*, CONCAT(O.firstname,' ',O.lastname) AS ownerName, 
CONCAT(A.firstname,' ',A.lastname) AS assigneeName 
FROM vehicles AS V LEFT JOIN employees AS O ON V.owner=O.id 
LEFT JOIN employees AS A ON V.assigned_to=A.id 
WHERE (`O.firstname` LIKE '%xyz%' OR `O.lastname` LIKE '%xyz%' OR `A.firstname` LIKE '%xyz%' OR `A.lastname` LIKE '%xyz%' OR `V.license_state` LIKE '%xyz%' OR `V.make` LIKE '%xyz%' OR `V.model` LIKE '%xyz%' )

对此有任何解决方法吗?

1 个答案:

答案 0 :(得分:1)

在您的WHERE子句中,表别名为的列名

`O.firstname` 

这是错误的方法,您可以对列名应用反引号,而不是表别名,应为

O.`firstname`

此外,如果您在LEFT JOIN本身而不是LEFT JOIN子句中应用WHERE相关的条件,则如果{{1 }}表:

因此查询将是:

employees