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
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 |