FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿Vistas temporales?
Hola. Estoy haciendo una consulta anidada de una tabla contra una vista, pero la vista puede cambiar, dependiendo de las condiciones de consulta, por lo cual opte por crear la vista en modo ejecución.
El caso es que si uso RECREATE VIEW me da que la vista está en uso si hay alguien más conectado a la base de datos o repito el listado, motivo por el cual tampoco puedo hacerle un DROP VIEW. ¿Hay alguna manera de crear una vista temporal para la transacción en curso, que se elimine cuando se cierre la transacción y que no sea visible para el resto de los usuarios? |
#2
|
||||
|
||||
resp
Primero te digo una cosa. Estas mal ya que ninguna bd bien diseñada jamas deberia cambiar su estructura dependiendo de ninguna condicion. A menos que se este restructurando la data.
Asi que soluciona lo de tu diseño y estes haciendo chapucero para arreglar alguna situacion.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#3
|
||||
|
||||
Saludos.
Como te menciona rastafarey verifica tu estructura porque eso de estar creando vistas en Run-Time no es eficiente. Una idea puede que hagas la vista "completa" con los campos que mostraras y los condicionantes, te creas un StoredProcedure y a este le pasas las condiciones para que el mismo ponga los filtros solicitados. Si no te funciona en FB 2.1 tienes las GTT que puedes también sacarles provecho. Hasta luego.
__________________
Gracias, Rolphy Reyes |
#4
|
|||
|
|||
Vaya!!! Lo que daría yo porque mis alumnos hubieran hablado así!!! ... ¡¡¡ y parecía que la ingeniería del software no tenía futuro cuando aparecieron los lenguajes RAD !!!!
Teneis razón, no es efectivo crear vistas en modo ejecución, ni mucho menos usar el RECREATE VIEW, aunque te lo permitiera el motor podrías llevarte sorpresas cuando se ejecutaran informes concurrentes, por eso necesito las vistas temporales activas en la transacción, como las de Oracle, (aunque se podría hacer algo con cursores). Iva a intentar explicar el problema del informe que tengo que sacar, un balance departamental con posibilidad de cuentas analíticas (por porcentajes de su saldo), pero no puras, sino sólo la que tenga movimientos sin departamento asignado. Pero sería un poco laborioso (el problema se presenta cuando se hace agrupación de departamentos por secciones) y sólo necesitaba saber si existían vistas temporales, pues me facilitaría mucho la Select anidada que tengo que sacar, si no, tengo que irme a procedures y cursores. Gracias por vuestra intervención, revisaré la estructura de datos ya que efectivamente, parece no haber nada de tablas temporales hasta la versión 2.1. |
#5
|
|||
|
|||
Pues sí que estoy tonto...
Pues eso... necesitaba una vista que tenía que crearse en tiempo de ejecución para hacer un LEFT JOIN con la tabla de movimientos, y no cai que puede hacer el LEFT JOIN directamente contra una SELECT, por lo tanto, no hay que crear la vista antes, sino usar la SELECT de la vista directamente en el LEFT JOIN.... Os pongo el chorizo por si a alguien le es de utilidad:
Código:
select m.cuenta, SUBSTRING(M.CLAVE_DEPARTAMENTO FROM 1 FOR 3) as CLAVE_DEPARTAMENTO, a.DPTO, a.porcent, sum(m.DEBE) as DEBE, Sum(m.HABER) as HABER from asientos m left join (select CUENTA, SUBSTRING(CLAVE_DEPARTAMENTO FROM 1 FOR 3) as DPTO, SUM(PORCENTAJE) AS PORCENT FROM analitica GROUP BY 1, 2) a on m.cuenta = a.cuenta and m.clave_departamento is null where m.ejercicio = 2008 AND (A.DPTO <> '' OR M.CLAVE_DEPARTAMENTO <> '') AND M.COD_EMPRESA = 1 group by 1, 2, 3, 4 Gracias de nuevo por vuestra ayuda. |
#6
|
|||
|
|||
Hola
yo la left join la haria contra un procedimiento utilizando execute statement construyendolo en funcion de los parametros que paso al procedimiento. O bien todo tu codigo dentro de un unico procedimiento igual que lo explicado antes y luego select del procemiento. No le veo el problema Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Tablas Temporales | look | SQL | 2 | 15-03-2008 17:53:16 |
Tablas Temporales | Milperrimo | Firebird e Interbase | 7 | 25-10-2007 06:01:25 |
Eventos temporales en Firebird | santiago14 | Firebird e Interbase | 3 | 29-03-2007 00:49:42 |
constantes temporales | Crandel | Varios | 11 | 17-01-2007 01:53:02 |
Creación de temporales | feruiz | Firebird e Interbase | 2 | 28-04-2004 11:35:20 |
|