我在我的模块的列表视图中插入了另一列,用getList函数插入值,我修改了sql以在renderList函数中过滤但我不能在where子句中使用别名。
我该如何解决?
我得到的错误是下一个:
Uncaught Unknown column 'product_supplier_name' in 'where clause'<br /><br />
SELECT SQL_CALC_FOUND_ROWS a.* , s.name AS product_supplier_name FROM ps_supplier_bill a LEFT JOIN ps_supplier s ON s.id_supplier = a.id_product_supplier WHERE 1 AND product_supplier_name LIKE '%fa%' ORDER BY product_supplier_name asc LIMIT 0,50
答案 0 :(得分:0)
正确的查询应该是:
SELECT SQL_CALC_FOUND_ROWS a.* , s.`name` AS product_supplier_name FROM `ps_supplier_bill` a LEFT JOIN `ps_supplier` s ON s.`id_supplier` = a.`id_product_supplier` WHERE 1 AND s.`name` LIKE '%fa%' ORDER BY s.`name` asc LIMIT 0,50
不可能在WHERE中直接使用别名,因为按时间顺序,WHERE发生在SELECT之前,它总是执行链中的最后一步。 REFER
来自MySQL doc:
标准SQL不允许在WHERE子句中引用列别名。强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值。