Estoy tratando de obtener algunas consultas escritas para cierta integridad en dos tablas. La consulta es algo como esto¿Cómo uso WHERE en Columna calculada?
SELECT if(o.is_discounted !=1, o.item_cost, o.discounted_item_cost) AS order_item_total,
SUM(oi.quantity * oi.price) AS item_total
FROM orders o
INNER JOIN order_items oi ON oi.order_id = o.id
WHERE order_item_total != item_total
GROUP BY o.id
He usado definitivamente alias a tales columnas en el pasado así que no estoy seguro de por qué en este caso me está diciendo order_item_total
no es una columna.
duplicado de http://stackoverflow.com/questions/942571/using-column-alias-in-where-clause-of-mysql-query-produces-an-error [de los documentos del mySQL] (http : //dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html): SQL estándar no permite referencias a alias de columna en una cláusula WHERE. Esta restricción se impone porque cuando se evalúa la cláusula WHERE, es posible que el valor de la columna aún no se haya determinado. – xQbert
Intenta reemplazar 'WHERE' con' HAVING', eso debería arreglarlo. – halfer
@xQbert Usted está en lo correcto, pero la respuesta no es tan buena como la aquí, en lo que concierne a esta consulta específica. Es gracioso que nunca lo haya intentado antes, pensé que sí. Pero aparentemente solo estaba en ORDER BY y TENIENDO las cláusulas –