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

Re: [pgsql-es-ayuda] Agrupar una consulta con selecc?==?ISO-8859-1?Q?ión del primer elemento

From: Javier Chávez B(dot) <jchavezb(at)gmail(dot)com>
To: I(dot)N(dot)T(dot) - Programación <dpto(dot)programacion(at)grupo-int(dot)com>
Cc: POSTGRESQL - Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Agrupar una consulta con selecc?==?ISO-8859-1?Q?ión del primer elemento
Date: 2009-01-29 16:36:06
Message-ID: ded64bba0901290836v4f1a8e27reccdda3f15e81247@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
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

-- 
Cumprimentos
jchavez
linux User #397972 on http://counter.li.org/

George Carlin  - "May the forces of evil become confused on the way to
your house."

In response to

Responses

pgsql-es-ayuda by date

Next:From: Nestor SertzenDate: 2009-01-29 16:38:13
Subject: Re: [?? Probable Spam] Ayuda sobre error en postgre
Previous:From: I.N.T. - ProgramaciónDate: 2009-01-29 16:35:15
Subject: Agrupar una consulta con selección del primer elemento

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