Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group