Calabaza escribió:
> 2008/4/29 Arturo <arturomunive(at)gmail(dot)com>:
>
>
>> SELECT
>> campo 1,
>> campo 2,
>> funcion1(campo3),
>> funcion2(campo4),
>> (funcion1(campo3) * funcion 2(campo4))
>> FROM
>> ...
>>
>
>
>> donde las funciones pueden ser calculo pesado
>>
>
>
>> Entonces yo creo que al usar asi las funciones cada una se ejecuta dos
>> veces
>> Mi pregunta es, existe algo como:
>>
>
>
>> SELECT
>> campo 1 as "R1",
>> campo 2 as "R2",
>> funcion1(campo3) as "R3",
>> funcion2(campo4) as "R4",
>> ("R3" * "R4") as "R5",
>> FROM
>> ...
>>
>
>
>> Obviamente asi no funciona (si no no lo preguntaría), pero hay alguna forma
>> de hacer eso????
>>
>
> Podrias hacerlo con subconsultas, o vistas...
>
> Veamos:
> Select
> x.*,
> (x.R3 * x.R4) as R5
> from
> (
> SELECT
> campo 1 as "R1",
> campo 2 as "R2",
> funcion1(campo3) as "R3",
> funcion2(campo4) as "R4"
> from ...
> ) as x
>
>
>> Igual mientras tanto, sigo buscando por internet, si encuentro algo les
>> aviso, si lo encuentran ustedes igual :)
>>
>
> La subconsulta la puedes enviar a una vista y luego el otro select
> sale más facil... como mejor te parezca..
> puedes darte una vuelta por:
>
> http://www.postgresql.org/docs/7.4/static/queries-table-expressions.html
>
> Ah! ojo que el link es para la version que yo uso, tu deberías buscar
> para la version que tú utilizas...
>
> Saludos!
>
Me parece razonalble tu solucion la probé funciona, pero aun no la he
puesto a pruba contra un gran numero de datos, ni la pase por explain
de todas formas lo hare y enviare los resultados