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