Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] SELECT de un AS en la misma consulta

Estas en el tema de SELECT de un AS en la misma consulta en el foro de Mysql en Foros del Web. Hola, compañeros: Este código me da error: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT ( 1 + 1 ) AS suma , ( 1 + ...
  #1 (permalink)  
Antiguo 26/03/2015, 08:52
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Pregunta SELECT de un AS en la misma consulta

Hola, compañeros:

Este código me da error:

Código MySQL:
Ver original
  1. SELECT (1+1) AS suma, (1+suma) AS suma2;

En la segunda parte (luego de la coma), quiero hacer referencia a la primera parte. ¿Es posible?

Muchas gracias.

Última edición por gnzsoloyo; 26/03/2015 a las 09:00
  #2 (permalink)  
Antiguo 26/03/2015, 09:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: SELECT de un AS en la misma consulta

Imposible.
Los alias de creados en un SELECT no existen desde el puto de vista físico, por lo que no pueden usarse ni en la misma linea del SELECT, ni en el WHERE.

Es una restricción global de los DBMS. No privativa de uno solo.

Lo que deseas hacer es posible sólo usando variables de usuario, pero requieren cierto tipo de manejo muy especial:
Código MySQL:
Ver original
  1. SELECT (@suma:=(1+1)) suma, (1+@suma) suma2;
Aclaremos que "@suma" es una variable que se crea en el primer bloque del SELECT, y que persiste mientras la conexión esté activa. NO ES un campo ni un alias, y no se relaciona con "suma" y "suma2", que son los encabezados de las columnas de salida.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/03/2015, 09:03
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: SELECT de un AS en la misma consulta

Hola metalfox6383:

Lo que quieres hacer es imposible, ya que los campos calculados SÓLO EXISTEN UNA VEZ QUE SE EJECUTA LA CONSULTA, es decir, el campo con el ALIAS SUMA no existe hasta después de que se ejecuta la consulta, pero la SUMA2, trata de usar este campo al mismo tiempo que se está generando, por eso es que marca que la columna SUMA es desconocida:

Código MySQL:
Ver original
  1. mysql> SELECT (1+1) AS suma, (1+suma) AS suma2;
  2. ERROR 1054 (42S22): Unknown column 'suma' in 'field list'

Una posible manera para hacer lo que quieres es hacer primero la primer suma y después, con una subconsulta, realizar la segunda suma, es decir, algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT suma, suma + 1 suma2
  2.     -> FROM (SELECT 1 + 1 suma) T;
  3. +------+-------+
  4. | suma | suma2 |
  5. +------+-------+
  6. |    2 |     3 |
  7. +------+-------+
  8. 1 row in set (0.00 sec)

La palabra reservada AS ya no forma parte del estándar y por lo tanto es completamente obsoleta.

No entiendo muy bien para qué te puede servir una suma como la que haces, tal vez si nos explicas un poco mejor el contexto de lo que quieres hacer, te podamos indicar alguna otra alternativa.

EDITADO: como siempre gnzsoloyo un paso adelante... Saludos

Saludos
Leo.
  #4 (permalink)  
Antiguo 27/03/2015, 08:06
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: SELECT de un AS en la misma consulta

Hola, compañeros. Muchas gracias. Han sido muy claras sus explicaciones.

En realidad estoy haciendo una consulta mucho más compleja y la resumí en esta consulta más simple para despejar la duda de lo único que necesitaba.

Mi consulta original integraba un subquery que se representaba con un alias, pero ese mismo alias no puedo referenciarlo para otro subquery. Para salir del problema hice dos sentencias diferentes, así como ustedes sugieren, pero quería saber si era posible realizarlo en una.

No obstante, Leonardo logra realizarlo en una sóla sentencia. Eso me sirve también, no lo había notado antes.

Caballeros, muchas gracias una vez más. Son unos buenos maestros. Saludos.
  #5 (permalink)  
Antiguo 27/03/2015, 08:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: SELECT de un AS en la misma consulta

Cita:
Iniciado por metalfox6383 Ver Mensaje
Hola, compañeros. Muchas gracias. Han sido muy claras sus explicaciones.

En realidad estoy haciendo una consulta mucho más compleja y la resumí en esta consulta más simple para despejar la duda de lo único que necesitaba.

Mi consulta original integraba un subquery que se representaba con un alias, pero ese mismo alias no puedo referenciarlo para otro subquery. Para salir del problema hice dos sentencias diferentes, así como ustedes sugieren, pero quería saber si era posible realizarlo en una.

No obstante, Leonardo logra realizarlo en una sóla sentencia. Eso me sirve también, no lo había notado antes.

Caballeros, muchas gracias una vez más. Son unos buenos maestros. Saludos.
Es fndamental que las consultas que se posteen sean las reales, y no una versión simplificada o modificada. Cuando las alteras estás omitiendo información MUY IMPORTANTE, y llevandonos a supuestos que no se cumplen.
Si hubieses moistrado la consulta real, la solucion posiblemente hubiese sido otra, porque lo que nos estás describiendo, que el alias está definido en la subconsulta podría tener una solución diferente, de acuerdo a en dónde esté la subconsulta.

Para futuro, NO MODIFIQUES EL CASO, postea la consulta REAL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 27/03/2015, 15:11
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: SELECT de un AS en la misma consulta

Muchas gracias. Realmente no era necesario colocar la consulta real, sólo quería despejar la duda que mostré. Saludos.
  #7 (permalink)  
Antiguo 01/07/2015, 08:49
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: SELECT de un AS en la misma consulta

"gnzsoloyo"... Muchas gracias por tu primero ejemplo. En este momento me está siendo muy útil en unas consultas algo más enredadas. Saludos.

Etiquetas: as, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:00.