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