"I.N.T. - Programación" escribió: > 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.
Puedes crear una funcion de agregacion "first" que te retorne lo que quieres. Por ej. create function first_int(anyelement, anyelement) returns anyelement as $$ select coalesce($1, $2); $$ language sql; create aggregate first(anyelement) (sfunc = first_int, stype = anyelement); Y luego deberia funcionar: CREATE OR REPLACE VIEW view_socios AS SELECT socios.nombre, socios.dni, first(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; -- Alvaro Herrera http://www.advogato.org/person/alvherre "El sudor es la mejor cura para un pensamiento enfermo" (Bardia) -- TIP 7: no olvides aumentar la configuración del "free space map"