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" <[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 postmasterProbaste 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
-- TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán
