duda en la realizacion de una consulta

From: Jose Alberto Sanchez Nieto <albertosanchez(at)hiperusera(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: duda en la realizacion de una consulta
Date: 2010-04-07 09:17:00
Message-ID: 4BBC4D8C.3050208@hiperusera.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos, tengo una pregunta sobre una query y me gustaría saber si
es posible realizarla. Tengo dos tablas compras y ventas:
Tabla compras Tabla ventas
key_articulo key_articulo
fecha_desde fecha
fecha_hasta cantidad
cantidad

Pues bien, mi intención es pasarle a una función como parámetros la
key_articulo y una fecha determinada, para después dentro de
la función realizar una consulta sobre las dos tablas para que me
devuelva la diferencia de cantidades entre ventas y compras teniendo como
parámetros de búsqueda la key_articulo pasado en la función y la fecha,
con esto me tendría que devolver de la tabla de compras el registro en
el cuál la fecha pasada por parámetro estuviese comprendida (entre
fecha_desde y fecha_hasta, teniendo también en cuenta que puede que no
haya ningún registro que coincida y entonces tendría que devolver cero
para poder realizar la operación de resta de cantidades). Lo mismo sería
con la de ventas, puede no existir registro y devolver ceros ó existir y
ser el más cercano a la fecha pasada por parámetro por detrás ó igual.
Estoy trabajando
con la siguiente query pero no doy con ello (sobre todo el manejar que
no me encuetre el registro correspondiente tanto en la tabla de compras
ó de ventas.
El parámetro que le paso está en la variable v_key_articulo y en v_fecha

select c.key_articulo, coalesce((v.cantidad - c.cantidad), 0) as
cantidad_real
from compras as c, ventas as v
where c.key_articulo = v_key_articulo and c.fecha_desde = (select
max(cc.fecha_desde) from compras as cc

where cc.fecha_desde <= v_fecha and
cc.fecha_hasta >= v_fecha and cc.key_articulo = v_key_articulo)

and v.fecha = (select vv.fecha from
ventas as vv

where
vv.key_articulo = v_key_articulo and vv.fecha <= v_fecha

order by
fecha desc limit 1);
Gracias por la atención y un saludo.

--
José Alberto Sánchez Nieto
Responsable Dpto. Informática

Hiper Usera, S.L.
C.I.F. B85139855
Pol. Industrial Las Avenidas
Torrejón de la Calzada (Madrid)
C.P. 28991
Telf: 91 860 99 00
Fax: 91 816 00 00
email: albertosanchez(at)hiperusera(dot)es

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Rodríguez Penabad 2010-04-07 13:57:17 Re: [pgsql-es-ayuda] Es posible recuperar una base de datos después de hacer "drop database"?
Previous Message Ignacio Balcarce 2010-04-07 01:32:15 Re: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X