Re: Obtener las ultimas versiones de un conjunto de registros

From: "Francisco Reyes" <lists(at)stringsutils(dot)com>
To: " Yoel Mc Lennan " <listas(at)yoel(dot)com(dot)ar>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Obtener las ultimas versiones de un conjunto de registros
Date: 2008-08-08 16:39:49
Message-ID: 35aedf52f0482ab77c15f015fe65e224@stringsutils.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 11:14 am 08/07/08 "Yoel Mc Lennan" <listas(at)yoel(dot)com(dot)ar> wrote:
> id_telefono | id_empresa | numero | version
> 1 1 444-4545 1
> 2 2 33333333 1

Creo que lo que necesitas es "distinct on"

drop table if exists telefonos_prueba;
create temp table telefonos_prueba
(
id_telefono smallint,
id_empresa smallint,
numero text,
version smallint

);

insert into telefonos_prueba values (1,1,'111-1111',1);
insert into telefonos_prueba values (2,2,'222-2222',1);
insert into telefonos_prueba values (3,3,'333-3333',1);
insert into telefonos_prueba values (4,3,'111-1111',2);
insert into telefonos_prueba values (5,2,'222-2222',2);
insert into telefonos_prueba values (6,1,'333-3333',2);

select distinct on (numero) numero,id_empresa,version from telefonos_prueba
order by numero,version desc ;

------------
Sale un resultado
numero | id_empresa | version
----------+------------+---------
111-1111 | 3 | 2
222-2222 | 2 | 2
333-3333 | 1 | 2
(3 rows)

No trates de poner id_empresa en el order by.. va a cambiar el resultado.
si el orden final es importante usa un sub-query para ordernar el orden
final.

Una nota.. para la proxima ayuda si pones el SQL para crear la tabla e
insertar los records. :-)

Espero esto sea lo que andas buscando.

Este metodo lo aprendi en la lista en Ingles. Salve el correo para mometos
como este.. Estaba buscando el correo para poder atribuir la respuesta a la
persona que originalmente lo recomendo, pero no encuentro el correo ahora.
:-(

Ultima nota... Creo que distinct on, no es parte del ANSI SQL, asi que si
estan en otra base de datos creo que ese metodo pueda que no exista.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Roberto A. 2008-08-08 23:38:50 Manejo de herencia en postgresql???
Previous Message Francisco Reyes 2008-08-08 16:10:57 Re: ayuda