我在yii2中有这个查询:
SELECT COUNT(*)
FROM `agencias`
LEFT JOIN `responsables` `rsp`
ON `agencias`.`responsable` = `rsp`.`responsable_id`
LEFT JOIN `receptores` `rec`
ON `agencias`.`receptor` = `rec`.`receptor_id`
WHERE (`nombre` LIKE '%pru%')
AND (nombres LIKE "%%" or apellidos LIKE "%%")
但是我得到消息'Column'nombre'in where where where is ambiguous' 我知道如何修复此错误设置where条件的别名,但不知道如何在yii2 activequery中。
所以问题是我如何为where条件设置别名来获取这样的查询:
SELECT COUNT(*)
FROM `agencias`
LEFT JOIN `responsables` `rsp`
ON `agencias`.`responsable` = `rsp`.`responsable_id`
LEFT JOIN `receptores` `rec`
ON `agencias`.`receptor` = `rec`.`receptor_id`
WHERE (`nombre` LIKE '%pru%') as alias1
AND (nombres LIKE "%%" or apellidos LIKE "%%") alias 2
答案 0 :(得分:2)
您需要在nombre
子句中的WHERE
字段前加上正确的表别名。假设您根据nombre
中的responsables
字段进行过滤,那么您的查询应为:
SELECT COUNT(*)
FROM `agencias`
LEFT JOIN `responsables` `rsp`
ON `agencias`.`responsable` = `rsp`.`responsable_id`
LEFT JOIN `receptores` `rec`
ON `agencias`.`receptor` = `rec`.`receptor_id`
WHERE (`rsp`.`nombre` LIKE '%pru%')
AND (`nombres` LIKE "%%" or `apellidos` LIKE "%%")