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

Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Agrupar una consulta con selección del primer elemento

From: "I(dot)N(dot)T(dot) - Programación" <dpto(dot)programacion(at)grupo-int(dot)com>
To: "Javier Chávez B(dot)" <jchavezb(at)gmail(dot)com>, POSTGRESQL - Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Agrupar una consulta con selección del primer elemento
Date: 2009-01-29 17:23:02
Message-ID: 4981E5F6.4090709@grupo-int.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Perfecto, ni se me había ocurrido...

Gracias

Javier Chávez B. escribió:
> On Thu, Jan 29, 2009 at 4:35 PM, "I.N.T. - Programación"
> <dpto(dot)programacion(at)grupo-int(dot)com> wrote:
>   
>> Buenas tardes,
>>
>> Tengo las 3 tablas:
>>
>> CREATE TABLE socios
>> (
>>  id_socio integer NOT NULL DEFAULT nextval('"socios_seq"'::text),
>>  nombre character varying(250),
>>  dni character varying(250),
>>  etc...
>>
>> CREATE TABLE tarjetas_socios
>> (
>>  id_tarjeta integer NOT NULL DEFAULT 0,
>>  id_socio integer NOT NULL DEFAULT 0
>> )
>>
>> CREATE TABLE tarjetas
>> (
>>  id_tarjeta integer NOT NULL DEFAULT nextval('"tarjetas_seq"'::text),
>>  id_tienda integer DEFAULT 0,
>>  etc...
>>
>> Y tengo la siguiente consulta:
>>
>> CREATE OR REPLACE VIEW view_socios AS
>> SELECT socios.nombre, socios.dni, tarjetas.id_tienda
>>  FROM socios, tarjetas_socios, tarjetas
>>  WHERE socios.id_socio = tarjetas_socios.id_socio AND
>> tarjetas_socios.id_tarjeta = tarjetas.id_tarjeta
>>  GROUP BY socios.nombre, socios.dni, tarjetas.id_tienda;
>>
>> Al ejecutar la vista muestra algo como:
>>
>> nombre         dni                 id_tienda
>> -------------------------------------
>> LUIS            123456         15
>> LUIS            123456         11
>> LUIS            123456         47
>> ANDRES     987654         12
>> ANDRES     987654         15
>> MIGUEL      555555         7
>>
>> etc...
>>
>> Necesitaría que el resultado de la vista fuera algo como:
>>
>> nombre         dni                 id_tienda
>> -------------------------------------
>> LUIS            123456         15
>> ANDRES     987654         12
>> MIGUEL      555555         7
>>
>> etc...
>>
>> Es decir, teniendo en cuenta el agrupamiento por los 2 primeros campos y
>> CUALQUIER VALOR del tercero (el primero, el último, da igual), pero que no
>> duplique al socio. ¿No existe una consulta en PostgreSQL del tipo ...
>>
>> CREATE OR REPLACE VIEW view_socios AS
>> SELECT socios.nombre, socios.dni, tarjetas.id_tienda
>>  FROM socios, tarjetas_socios, tarjetas
>>  WHERE socios.id_socio = tarjetas_socios.id_socio AND
>> tarjetas_socios.id_tarjeta = tarjetas.id_tarjeta
>>  GROUP BY socios.nombre, socios.dni, first(tarjetas.id_tienda);
>>
>> ... (como en access, ¡¡¡lo siento!!!)? ¿Y de alguna otra forma?
>>
>> Gracias de antemano por vuestra ayuda
>>
>> --
>> TIP 4: No hagas 'kill -9' a postmaster
>>
>>     
>
> Probaste con un Max ???
>
> algo asi :
>
> SELECT   socios.nombre,
>                 socios.dni,
>                 Max(tarjetas.id_tienda)
>  FROM socios, tarjetas_socios, tarjetas
>  WHERE socios.id_socio = tarjetas_socios.id_socio AND
> tarjetas_socios.id_tarjeta = tarjetas.id_tarjeta
>  GROUP BY socios.nombre, socios.dni;
>
> Puede ser???
>
> Slds.
>
> J
>
>   


In response to

Responses

pgsql-es-ayuda by date

Next:From: Gunnar WolfDate: 2009-01-29 17:45:35
Subject: Re: Encoding ca?==?utf-8?B?cmFjdGVyIMK6
Previous:From: Javier Chávez B.Date: 2009-01-29 17:21:01
Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Agrupar un?==?ISO-8859-1?Q?a consulta con selección del primer elemento

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