Ver Mensaje Individual
  #1  
Antiguo 23-11-2006
pvizcay pvizcay is offline
Miembro
 
Registrado: jun 2006
Posts: 147
Reputación: 18
pvizcay Va por buen camino
Unhappy consulta en Firebird 1.5.3

Hola gente del foro, tengo una consulta que se me cruzó y no puedo sacar un solución limpia en FB para la misma.. si alguno tiene una sugerencia se lo agradeceré:

básicamente quiero computar / filtrar sobre columnas computadas (no de la tabla sobre la que estoy consultando)

Código SQL [-]
select (select ... {consulta compleja}) as A,
         (select ... {consulta compleja}) as B,
         A - B as C <-- no me deja
from XXX
where A <> 0 or B <> 0 <-- también me da error

eso me imaginé no iba a funcionar sabiendo que los where y eso tienen que estar sobre columnas de la tabla base..

el problema es que repeterir la consulta donde uso las referencias a las columnas computadas (suponiendo que el optimizador que no se como funciona no se de cuenta de que está repetida) me duplicaría todo el tiempo de la consulta...

también intente:

select A, B, (A-B) as C from
(
select (select ... {consulta compleja}) as A,
(select ... {consulta compleja}) as B
from XXX
)
where A <> 0 or B <> 0
[/sql]

pero me indica error en la línea 3, invalid token por lo que deduje que un select * from (select * ..)) no es permitido en el firebird..

de más está decir que busco una solución en sql limpia, también podria procesar el dataset resultante por código pero no es la idea..
lo otro que se me ocurre es crear un stored procedure selecteable como en

Código SQL [-]
select A, B, (A-B) as C  from
PROCEDURE_SELECT
where A <> 0 or B <> 0

pero me no me termina de convencer..

alguna idea??

gracias!!
Responder Con Cita