Contenido de esta guía
Por qué fallan los alias
Los alias suelen fallar por tres causas: una coma ausente, una referencia utilizada fuera de su alcance o un nombre ambiguo. El error puede producir un mensaje de sintaxis, pero también una consulta válida con encabezados o datos distintos de los esperados.
La forma de diagnosticarlo es separar las preguntas: ¿el alias nombra una columna de salida o una tabla?, ¿en qué cláusula se utiliza?, ¿sigue disponible el nombre original?
Error 1: olvidar una coma
SELECT nombre precio,
stock
FROM productos;Como AS puede omitirse, el motor puede interpretar precio como alias de nombre. La consulta devuelve nombres de producto bajo una cabecera llamada precio, no la columna numérica que esperabas.
SELECT nombre AS producto,
precio,
stock
FROM productos;Escribir AS y alinear cada expresión en una línea hace visible la coma que separa columnas.
Error 2: usar el alias demasiado pronto
SELECT precio * stock AS valor_stock
FROM productos
WHERE valor_stock > 500;WHERE decide qué filas pasan antes de construir la lista de salida. Repite la expresión en el filtro o calcula primero el alias en una subconsulta.
Error 3: mezclar alias y nombre original
SELECT productos.nombre, p.precio
FROM productos AS p;En PostgreSQL, cuando una tabla recibe el alias p, ese alias pasa a ser su nombre dentro de la consulta. Utiliza p.nombre y p.precio de forma coherente. Esta disciplina también evita ambigüedades en consultas con varias tablas.
Error 4: nombres de salida repetidos
Dos expresiones pueden compartir alias y el motor puede aceptar la consulta, pero el resultado será difícil de consumir desde una aplicación. Evita devolver dos columnas llamadas total; usa nombres como total_pedido y total_cliente.
Corrección completa
SELECT p.nombre AS producto,
ROUND(p.precio * p.stock, 2) AS valor_stock
FROM productos AS p
WHERE p.precio * p.stock > 500
ORDER BY valor_stock DESC;| producto | valor_stock |
|---|---|
| Disco SSD | 801.0 |
| Auriculares | 768.9 |
| Monitor 24 | 716.0 |
La consulta usa comas explícitas, mantiene el alias de tabla p, repite el cálculo en WHERE y reserva el alias de salida para la cabecera y la ordenación.
Comprueba lo aprendido
Repara una consulta con tres fallos
Corrige la consulta para devolver producto y precio_con_iva. Debe mostrar productos con precio base superior a 50 y ordenar por el precio calculado.SELECT nombre producto precio * 1.21 AS precio_con_iva FROM productos WHERE precio_con_iva > 50 ORDER BY precio_con_iva;
SELECT.precio, no el alias calculado.ORDER BY precio_con_iva.Solución razonada
SELECT nombre AS producto,
ROUND(precio * 1.21, 2) AS precio_con_iva
FROM productos
WHERE precio > 50
ORDER BY precio_con_iva;La coma separa las columnas, WHERE usa el dato disponible en la tabla y ORDER BY aprovecha el nombre de salida.
Lista de comprobación
- Escribe una expresión por línea y revisa las comas.
- Usa
ASen alias de columna cuando mejore la lectura. - No filtres en
WHEREcon un alias creado en el mismoSELECT. - Tras asignar un alias de tabla, referencia sus columnas con ese nombre.
- Evita alias duplicados o demasiado crípticos.
Compatibilidad entre motores
El alcance exacto puede variar. MySQL admite alias de salida en GROUP BY, ORDER BY y HAVING, pero documenta que no son válidos en WHERE. PostgreSQL permite etiquetas de salida para ordenar y especifica que un alias de tabla sustituye al nombre original en el resto de la consulta. Las comillas simples y dobles tampoco significan lo mismo en todos los contextos: para código portable, evita alias con espacios y usa identificadores sencillos.
Qué debes recordar
- Un alias puede ocultar una coma ausente.
- El orden lógico de la consulta determina dónde existe.
- Los alias de tabla deben usarse de forma coherente.
- Una consulta válida también puede devolver encabezados engañosos.