Re: consulta realizacion de una select

From: Juan Romero <jgromero(at)gmail(dot)com>
To: Jose Alberto Sanchez Nieto <albertosanchez(at)hiperusera(dot)es>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: consulta realizacion de una select
Date: 2010-03-26 16:40:41
Message-ID: 3c7410401003260940o58863294xcd072ed27610f572@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2010/3/26 Jose Alberto Sanchez Nieto <albertosanchez(at)hiperusera(dot)es>:
> Hola a todos, estoy empezando con postgres y sql y me surge una duda en una
> consulta que supongo será fácil pero que me cuesta, tengo una TablaA y
> TablaB con la siguiente estructura:
> TablaA                                                    TablaB
> id integer primary key                        id integer primary key
> valor_compra   numeric(12,2)           valor_venta numeric(12,2)
> fecha Date                                             fecha Date
> key integer                                           key integer
>
> El caso es que quiero hacer una consulta que me devuelva una sola fila con
> los campos que necesito de cada tabla con las siguientes directrices:
> - El campo de unión de las dos tablas es key (se pasará como parámetro para
> realizar la unión)
> - Se pasará otro parámetro que será una fecha, puede que tanto la tablaA
> como la tablaB no tengan registro de esa fecha así que habría que
>   recoger en ese caso el inmediatamente anterior en cada una de ellas
> Tal que la select me devuelva una sóla fila con los campos de las dos filas
> encontradas en las dos tablas, algo como:
> key, id,  (valor_venta / valor_compra) as margen, fecha
> La unión es sencilla con:
> Select a.key, a.id as codigo, (valor_venta /valor_compra) as margen, fecha
> from TablaA as a, TablaB as b
> where a.key=b.key
AND a.fecha <= 'fecha_parametro' AND b.fecha <= 'fecha_parametro'
ORDER BY a.fecha DESC, b.fecha DESC
LIMIT 1;

pero a partir de aquí no sé muy bien como recuperar las
> filas de la tabla A y B sabiendo que pueden no tener ningún
> registro coincidente con la fecha pasada como parámetro y teniendo que
> recuperar el más cercano a él.
>

Si entendí bien, con eso lo resuelves, aunque no creo que ese diseño
que tienes sea muy bueno. En principio, no puedes garantizar que la
consulta te retorne una sola fila (por eso el limit) y tampoco puedes
garantizar que no ingreses registros de "ventas" que no tengan ninguna
relacion con alguna "compra"

Saludos,

Juan Gabriel Romero
Colombia

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jose Alberto Sanchez Nieto 2010-03-26 17:28:35 Re: consulta realizacion de una select]
Previous Message Raúl Andrés Duque Murillo 2010-03-26 16:33:11 Re: permisos sobre triguer