Problema
estoy usando nombre de la columna alterna (alias) en una consulta, puedo usar el alias "given_name" como parte de la orden por, pero no soy capaz de utilizarlo como parte de la cláusula WHERE. WHERE "given_name" se transfiere como resultado de una solicitud fuera de mi control y no sé el nombre de columna real que se debe usar en la condición WHERE.Alias de columna en una cláusula WHERE
Pregunta
- Es allí una manera/piratear utilizar un alias de columna en una cláusula WHERE?
- ¿Hay alguna manera de encontrar el nombre de columna de un alias?
Investigación
Después de algunas investigaciones se ve como alias se añaden después de después de la cláusula WHERE.
Ejemplo
SELECT profile.id AS id, given.name AS 'given_name', family.name AS 'family_name'
FROM green_profile profile
LEFT JOIN green_name given ON given.profileid = profile.id AND given.name_typeid = 0
LEFT JOIN green_name family ON family.profileid = profile.id AND family.name_typeid = 1
WHERE given_name LIKE 'levi%'
ORDER BY given_name DESC LIMIT 0 , 25
Gracias, gran explicación. Ambas soluciones funcionan, sin embargo, después de la evaluación comparativa frente a una gran tabla, la solución de visualización proporciona un rendimiento mucho mejor. –
Sospecho que podría ser así, ya que solo tendrá que hacer una declaración de selección completa una vez para la vista, luego puede almacenarla en caché e indexarla para futuras llamadas (no estoy seguro de cómo funcionan los detalles de esto). Espero que el rendimiento sea ligeramente mejor simplemente refiriéndome a los nombres de las columnas originales, y no a la vista en conjunto, pero espero que no sea una gran diferencia. –