Skip site navigation (1) Skip section navigation (2)

Re: Vistas Materializadas Vs, Vistas Comunes

From: Raúl Andrés Duque <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Arturo Munive" <arturomunive(at)gmail(dot)com>,"Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Vistas Materializadas Vs, Vistas Comunes
Date: 2007-12-27 13:42:15
Message-ID: 00c101c8488e$4bd957b0$0200a8c0@Principal (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
----- Original Message ----- 
From: "Arturo Munive" <arturomunive(at)gmail(dot)com>
To: "Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, December 26, 2007 9:44 AM
Subject: Re: [pgsql-es-ayuda] Vistas Materializadas Vs, Vistas Comunes


>
>> Yo tengo una base en postgresql desde el 2003 con
>> movimientos de varios locales y puedo hacer la
>> consulta por local o global. Claro no exceden las
>> 300000 lineas el cabezal de los documentos y las
>> 500000 lineas los documentos, por ahora me va muy bien
>> con esto.
>>
>> Si tu queres me mostras la estructura yo la lleno y
>> hacemos alguna prueba, te parece ?
> La estructura estoy definiéndola ahora (el proyecto aun no lo acabo)
> pero tentativamente es esto:
>
> CREATE TABLE "public"."mov_almacen" (
>    id          SERIAL,
>    id_producto INTEGER,
>    id_almacen  INTEGER,
>    cantidad    NUMERIC(10,3),
>    fecha       DATE,
>    entrada     BOOLEAN,
>    PRIMARY     KEY(id)
> ) WITHOUT OIDS;
>
> -- entrada indica si es TRUE que es ingreso al almacén de lo contrario es 
> una salida del mismo
>
> lo que quiero es ver la cantidad de productos que existen actualmente en 
> el almacén
>
> Una primera aproximacion sería:
>
> SELECT
> mov.id_producto,
> sum(
>    case
>    when not mov.entrada then (-mov.cantidad)
>    else mov.cantidad end )
> FROM
>    mov_almacen AS mov
> WHERE
>    mov.id_almacen = 1
> GROUP BY
>    mov.id_producto
>
> Donde simplemente sumo las cantidades de los movimientos y si son salidas 
> las resto (uso su valor negativo).
>
>
> ahora bien si yo quiero saber cuanto del producto 1 me queda en el almacén 
> 3  por ejemplo tendría que recorrer toda la tabla sumando y restando para 
> saber cuanto queda.
>
> Cual sería otra solución simple??
>
>

Algo que he utilizado es implementar tablas de resumen, por ejemplo con 
saldos por año/mes/día, etc. y con cada operación se actualiza. Por ejemplo 
si requieres el saldo a una fecha especifica (y no tienes saldos por día) 
arrancas el saldo del mes anterior y acumulas los movimientos del mes hasta 
el día que requieras. El inconveniente de este tipo de estructuras es que 
debes mantenerlas actualizadas por aplicación o triggers de la DB y algunas 
veces se descuadran (aunque no debería pasar), por lo que tienes que crear 
procesos de recalculo de estos acumulados.

Atentamente,

RAUL DUQUE
Bogotá, Colombia

>
>
>
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá 
> leerlo 


In response to

Responses

pgsql-es-ayuda by date

Next:From: Alejandro D. BurneDate: 2007-12-27 13:42:22
Subject: Re: AYUDA CON RESTORE DE BASE DE DATOS
Previous:From: Alvaro HerreraDate: 2007-12-27 13:32:53
Subject: Re: Misma tabla dos bases de datos

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group