On Thu, Jan 29, 2009 at 4:35 PM, "I.N.T. - Programación"
<[email protected]> 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."
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda