我有两个表-车辆和员工。
车辆具有两个字段-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%' )
对此有任何解决方法吗?
答案 0 :(得分:1)
在您的WHERE子句中,表别名为的列名
`O.firstname`
这是错误的方法,您可以对列名应用反引号,而不是表别名,应为
O.`firstname`
此外,如果您在LEFT JOIN
本身而不是LEFT JOIN
子句中应用WHERE
相关的条件,则如果{{1 }}表:
因此查询将是:
employees