![]() |
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)
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
pero me no me termina de convencer.. alguna idea?? gracias!! |
Si quieres hacer un Select donde contenga SubSelect's si se puede, pero no te funcionarìa un SubSelect con Asterisco * (Select *from....) aqui debes de indicar 1 sòlo campo ò grupos de campos por ejemplo:
[/sql] Espero haberme explicado. |
clarifico más
si entiendo lo que me indicas y desde ya gracias por tomarte la molestia en leer y responder, pero el problema creo no viene por ahi.. entiendo que un subselect debe devolver un solo campo, generalmente se usan
a) para generar un campo computado: select A, B, (select D + A where..) from X b) para generar un valor en un predicado del where: select * from X where A = (select B + C from X where...) aca lo que intento es hacer un select de otro select como en: select A, B, A - B from ( select A, B from XXX where...) where.. dejo la consulta en cuestión super simplificada
la misma me indica: Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 3, char 5. select. gracias!!! |
termine haciendo un SPs con el select interior y hacieno select sobre el mismo.. no encontre nada mejor
salu2 |
no huebira sido mejor
como vez? |
no..
Cita:
de la página de reformas en firebird 2: "Many new additions have been made to the SQL language, including support for derived tables (SELECT ... FROM ( SELECT ... FROM)) with multiple layers of nesting and the ability to join nested sets, as defined by SQL200X." pueden chequearlo en: http://www.firebirdsql.org/index.php...d=fb20_release saludos! |
La franja horaria es GMT +2. Ahora son las 09:08:19. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi