Re: Optimizar consulta

From: "Mauricio Zea (Gmail)" <jmzlbqcol(at)gmail(dot)com>
To: "Ricardo Fuentes Pereira" <rfuentesp(at)gmail(dot)com>
Cc: "Mario Soto Cordones" <msotocl(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Optimizar consulta
Date: 2005-05-20 20:49:58
Message-ID: 00a001c55d7d$7fc59ec0$cc01a8c0@gerencia
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Mira el aparte 32.2 del archivo pgadmin3.chm

Mauricio Zea
----- Original Message -----
From: "Ricardo Fuentes Pereira" <rfuentesp(at)gmail(dot)com>
To: "Mauricio Zea (Gmail)" <jmzlbqcol(at)gmail(dot)com>
Cc: "Mario Soto Cordones" <msotocl(at)gmail(dot)com>;
<pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, May 20, 2005 3:30 PM
Subject: Re: [pgsql-es-ayuda] Optimizar consulta

> Mauricio Zea (Gmail) escribió:
>
>> claro... para el lenguaje de programacion es totalmente indiferente si es
>> una tabla o es una vista..
>> Recuerda que una vista es como decir "una tabla virtual" compuesta por
>> datos de varias tablas.
>>
>> No se si está bien empleado el termino virtual, pero quise decir : "una
>> vista es como una tabla de mentiritas..."
>>
>> O mejor aun, es una TABLA LOGICA, y se accede a ella como si fuera una
>> tabla normal.
>
> Uhmmm. Desconocia por completo lo que son las vistas. Son muy potentes.
> Ahora lo que queda es declarar la consulta de manera que entregue todos
> los datos y que no sume valores que alteran la informacion.
>
> Cito la SQL y la descripcion del problema del mensaje original:
>
> SELECT *
> FROM (
> SELECT * ,
> (fact.compra.sum_valor_fc + fact_gasto.sum_valor_fg) AS sum_valor
> FROM sx_prov prov,
> -- fact_compra
> -- recorro la tabla sx_fact_compra segun el rut
> -- para obtener a cuanto ascienden las factura de compra
> (
> SELECT COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) AS
> sum_valor_fc
> FROM sx_fact_compra
> WHERE rut = $1
> ) AS fact_compra,
> -- fact_gasto
> -- analogo a la sx_fact_compra
> (
> SELECT COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) AS
> sum_valor_fg
> FROM sx_fact_gasto
> WHERE rut = $1
> ) AS fact_gasto
> WHERE prov.rut = $1
> GROUP BY
> --- los GROUP BY necesarios
> ) AS tabla
> ORDER BY sum_valor DESC
>
> -- fin cita
>
> Lo que trate de hacer esa vez para devolver todos las filas (y no solo una
> dado el rut) fue, en cada uno de los select anidados para facturas,
> entregar el rut, y agrupar por el rut tambien, para finalmente en los
> where afuera, hacer un join con sx_prov segun rut.
>
> Me quedo algo asi:
>
> SELECT *
> FROM (
> SELECT * ,
> (fact.compra.sum_valor_fc + fact_gasto.sum_valor_fg) AS sum_valor
> FROM sx_prov prov,
> -- fact_compra
> -- recorro la tabla sx_fact_compra segun el rut
> -- para obtener a cuanto ascienden las factura de compra
> (
> SELECT rut, COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) AS
> sum_valor_fc
> FROM sx_fact_compra
> GROUP BY rut
> ) AS fact_compra,
> -- fact_gasto
> -- analogo a la sx_fact_compra
> (
> SELECT rut, COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) AS
> sum_valor_fg
> FROM sx_fact_gasto
> GROUP BY rut
> ) AS fact_gasto
> WHERE prov.rut = fact_compra.rut
> AND prov.rut = fact_gasto.rut
> GROUP BY
> --- los GROUP BY necesarios
> ) AS tabla
> ORDER BY sum_valor DESC
>
> Pero al recuperarla me entrega sumas erroneas. ¿Alguna idea de por que
> ocurre esto?
> ¿Cual tendria que ser la consulta?
>
> Salu2

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martín Marqués 2005-05-20 21:08:25 Re: Ayuda con fechas
Previous Message Ricardo Fuentes Pereira 2005-05-20 20:49:28 Re: TRIGGERS: lo prometido es ....