PDA

Ver la Versión Completa : Firebird soporta Vistas en linea?


maxid
16-11-2007, 18:36:46
he querido hacer una vista en linea, como por ejemplo:


select
cp.Nombre,
e.nombre as nomesp,cpro.nombre as nompro,
min(fecha) PrimeraConsulta,
max(fecha) UltimaConsulta,
count(cp.Nombre),
(SELECT
first 1
DETTABLAS.CODIGO,
DETTABLAS.DESCRI
FROM
HISTORIAS_CLINICAS
INNER JOIN DETHISTORIAS ON (HISTORIAS_CLINICAS.NUMINT = DETHISTORIAS.NUMINT)
INNER JOIN DETTABLAS ON (DETHISTORIAS.NUMTAB = DETTABLAS.NUMINT)
where
DETTABLAS.TABLA = 3
and
HISTORIAS_CLINICAS.pacien=HISTORIAS_CLINICAS.pacien
group by
DETTABLAS.CODIGO,
DETTABLAS.DESCRI
having count(*) = 1

order by max(HISTORIAS_CLINICAS.FECHA) desc) x
from
vw_diagpac
LEFT OUTER pacien
turnos t, cuentas cp, practicas p,
horarios h, cuentas cpro, especialidades e

where
t.pacien = cp.numint And
t.practi = p.Numero And
t.horari = H.numint and
h.profes=cpro.numint and
h.especi=e.numero and
cambio in(2,3,5) and
h.fecha between '10/01/2006' and '05/31/2007'

group by
cp.Nombre,
e.nombre,
cpro.nombre
order by e.nombre,cpro.nombre


y me da error que no conoce el select
esto está soportado en mysql, oracle, postgres y hasta en mssql

jhonny
16-11-2007, 18:43:43
La sintaxis para crear vistas en FireBird es:


create view new_view ( _fields_ )
as
select _fields_ from _table_name_
where _conditions_


Como vez la consulta que nos acabas de mostrar debe estar despues del As y tendras que indicarle un alias de los campos donde dice "_fields_" en el orden respectivo a tu consulta.

Nota: Recuerda que debes usar las etiquetas SQL para que se vea mejor tu codigo.

juanelo
16-11-2007, 18:53:16
Que tal Maxid,
Lo que quieres hacer se resuelve con tablas derivadas, que son tablas en tiempo de ejecucion recultado de una consulta pero que a su vez pueden ser utilizadas por ejemplo en un join. Te recomiendo que leas lo que trae de nuevo el firebird 2.0.x y cheques el tema de "derivate tables" o tablas derivadas.
Saludos.