Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

ayuda con tablas temporales

Estas en el tema de ayuda con tablas temporales en el foro de PostgreSQL en Foros del Web. Tengo la sgte consulta en mssql server 2000 q es parte de un procedimiento almanacenado create table #temporal (desorgano char(40),desdistrito char(40), destipoprestamo char(40),num_pre int,pagos money, ...
  #1 (permalink)  
Antiguo 07/05/2007, 08:18
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años
Puntos: 0
ayuda con tablas temporales

Tengo la sgte consulta en mssql server 2000 q es parte de un procedimiento almanacenado

create table #temporal (desorgano char(40),desdistrito char(40), destipoprestamo char(40),num_pre int,pagos money, saldo money)
INSERT INTO #temporal
select e.descrip as desorgano,f.descrip as desdistrito,g.descripcion as destipoprestamo,
a.num_pre,sum(a.trn_imp) as pagos,b.mon_des-sum(a.trn_imp) as saldo
from pre_trn a,prestamo b,rel_idu c,rel_ocu_fun d,organo e,distrito f,tip_pre g
where a.num_pre=b.num_pre and a.fec_tra<=@fecha
and a.tip_trn=2 and a.baja=0 and a.temporal=0
and b.cod_per=d.cod_per and c.cod_ridu=d.rel_ridu and d.vigente=1 and c.cod_org=e.cod_org
and c.cod_dis=f.cod_dist and b.cod_tipo=g.cod_tipo
group by e.descrip,f.descrip,g.descripcion,a.num_pre,b.mon_ des
union
select e.descrip as desorgano,f.descrip as desdistrito,g.descripcion as destipoprestamo,
b.num_pre,0 as pagos,b.mon_des as saldo from m_prestamosinpagos b,rel_idu c,
rel_ocu_fun d,organo e,distrito f,tip_pre g
where b.fec_des<=@fecha and b.cod_per=d.cod_per and c.cod_ridu=d.rel_ridu and d.vigente=1
and c.cod_org=e.cod_org and c.cod_dis=f.cod_dist and b.cod_tipo=g.cod_tipo
union
select e.descrip as desorgano,f.descrip as desdistrito,h.descripcion as destipoprestamo,
b.num_pre,0 as pagos,b.mon_des as saldo from prestamo b,rel_idu c,rel_ocu_fun d,
organo e,distrito f,tip_pre h,
m_fechasminimas g where b.fec_des<=@fecha and g.fechaminima>@fecha and b.num_pre=g.num_pre
and b.cod_per=d.cod_per and c.cod_ridu=d.rel_ridu and d.vigente=1 and c.cod_org=e.cod_org
and c.cod_dis=f.cod_dist and b.cod_tipo=h.cod_tipo
select desorgano,desdistrito,destipoprestamo,sum(saldo) as total from #temporal group by desorgano,desdistrito,destipoprestamo order by desorgano,desdistrito,destipoprestamo
drop table #temporal



hice en postgres las misma consulta

create temporary table temporal(desorgano character(40),desdistrito character(40), destipoprestamo character(40),num_pre integer,pagos double precision, saldo double precision);
insert into temporal(desorgano,desdistrito,destipoprestamo,num _pre,pagos,saldo)
select e.descrip as desorgano,f.descrip as desdistrito,g.descripcion as destipoprestamo,
a.num_pre,sum(a.trn_imp) as pagos,b.mon_des-sum(a.trn_imp) as saldo
from pre_trn a,prestamo b,rel_idu c,rel_ocu_fun d,organo e,distrito f,tip_pre g
where a.num_pre=b.num_pre and a.fec_tra<='2007-12-12'
and a.tip_trn='2' and a.baja='0' and a.temporal='0'
and b.cod_per=d.cod_per and c.cod_ridu=d.rel_ridu and d.vigente='1' and c.cod_org=e.cod_org
and c.cod_dis=f.cod_dist and b.cod_tipo=g.cod_tipo
group by e.descrip,f.descrip,g.descripcion,a.num_pre,b.mon_ des
union
select e.descrip as desorgano,f.descrip as desdistrito,g.descripcion as destipoprestamo,
b.num_pre,0 as pagos,b.mon_des as saldo from m_prestamosinpagos b,rel_idu c,
rel_ocu_fun d,organo e,distrito f,tip_pre g
where b.fec_des<='2007-12-12' and b.cod_per=d.cod_per and c.cod_ridu=d.rel_ridu and d.vigente='1'
and c.cod_org=e.cod_org and c.cod_dis=f.cod_dist and b.cod_tipo=g.cod_tipo
union
select e.descrip as desorgano,f.descrip as desdistrito,h.descripcion as destipoprestamo,
b.num_pre,0 as pagos,b.mon_des as saldo from prestamo b,rel_idu c,rel_ocu_fun d,
organo e,distrito f,tip_pre h,
m_fechasminimas g where b.fec_des<='2007-12-12' and g.fechaminima>'2007-12-12' and b.num_pre=g.num_pre
and b.cod_per=d.cod_per and c.cod_ridu=d.rel_ridu and d.vigente='1' and c.cod_org=e.cod_org
and c.cod_dis=f.cod_dist and b.cod_tipo=h.cod_tipo;
select desorgano,desdistrito,destipoprestamo,sum(saldo) as total from temporal group by desorgano,desdistrito,destipoprestamo order by desorgano,desdistrito,destipoprestamo;
drop table temporal;

a diferencia del sql server el postgres ya no me muestra el resultado de la consulta,en el postgres no me esta tomando en cuenta el select que hago antes del drop
la logica de esta consulta es la sgte
1.-creo la tabla temporal create temporary table temporal
2.- inserto los registros con un select insert into temporal
3.-hago una consulta para ver los datos que ingrese en la tabla temporal
4.-hago el drop de la tabla temporal

en el sql funciona perfecto pero en el postgres ya no me devuelve el resultado de la ultima consulta antes del drop
  #2 (permalink)  
Antiguo 08/05/2007, 07:47
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: ayuda con tablas temporales

Estimado amigo, postgresql no hace milagros, debes almacenar en una variable la consulta que has hecho, he visto que usted tiene la mala mania de comparar los gestores de bases de datos, pero resulta que cada gestor tiene su forma de trabajar, sql server es un administrador potente de microsoft, maneja muy diferente las cosas a postgresql, en este caso lo que puedes hacer es crear una funcion que cree la tabla, agregue los datos, luego recorres la tabla en tu aplicacion y al finalizar creas una funcion que te borre la tabla o simplemente le das drop table y el nombre de tu tabla, no necesariamente debe ser temporal, pero si quieres hacerlo asi, pues hazlo, esta es una posible solucion.


Saludos
  #3 (permalink)  
Antiguo 08/05/2007, 13:20
 
Fecha de Ingreso: abril-2007
Mensajes: 27
Antigüedad: 17 años
Puntos: 0
Re: ayuda con tablas temporales

Cita:
Iniciado por rusinho Ver Mensaje
Estimado amigo, postgresql no hace milagros, debes almacenar en una variable la consulta que has hecho, he visto que usted tiene la mala mania de comparar los gestores de bases de datos, pero resulta que cada gestor tiene su forma de trabajar, sql server es un administrador potente de microsoft, maneja muy diferente las cosas a postgresql, en este caso lo que puedes hacer es crear una funcion que cree la tabla, agregue los datos, luego recorres la tabla en tu aplicacion y al finalizar creas una funcion que te borre la tabla o simplemente le das drop table y el nombre de tu tabla, no necesariamente debe ser temporal, pero si quieres hacerlo asi, pues hazlo, esta es una posible solucion.


Saludos
siii es mala mania mira lo que pasa en este tema es que ando hace tiempo ya con una migracion de sql server y tengo que tratar de que mis funciones trabajen de la misma forma que en el sql server medio dificil pero tengo que hacerlo para que los encargados de enlazar con el front no tengan muchos problemas de todas maneras gracias por la respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:41.