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