> Buenos dias a todos > tengo un problema con la funcion LIST les pongo un ejemplo para > ilustralo mejor, tengo las siguientes tablas: > CREATE TABLE public.producto ( > id NUMERIC NOT NULL, > nombre TEXT, > CONSTRAINT producto_pkey PRIMARY KEY(id) > ) WITHOUT OIDS; > CREATE TABLE public.formadeadquisicion ( > id NUMERIC NOT NULL, > forma TEXT, > CONSTRAINT formadeadquisicion_pkey PRIMARY KEY(id) > ) WITHOUT OIDS; > CREATE TABLE public.productoformaadquisclugar ( > idproducto NUMERIC NOT NULL, > idforma NUMERIC NOT NULL, > idlugar NUMERIC NOT NULL, > CONSTRAINT productoformaadquisc_pkey PRIMARY KEY(idproducto, idforma, > idlugar) > ) WITHOUT OIDS; > > Ahora tengo una consulta para obtener los producto por su forma de > adquisicion donde necesito los nombres de los productos y las formas > concatenados, la consulta seria esta: > SELECT > LIST(p.nombre) as prod, > LIST(fa.forma)as forma > FROM > public.producto p > INNER JOIN public.productoformaadquisclugar pfl ON (p.id = > pfl.idproducto) > INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id) > > el resultado de la consulta queda asi: > > > ahora el problema que estoy teniendo es que los usuarios necesitan que > si el producto se repite salga una sola vez, en este ejemplo el mango > sale 2 veces y necesito que salga solo una, la funcion list que estoy
Que tal si le pones al select la clausula DISTINC > usando es esta: > > CREATE FUNCTION comma_cat(text, text) RETURNS text > LANGUAGE sql > AS $_$select case > WHEN $2 is null or $2 = '' THEN $1 > WHEN $1 is null or $1 = '' THEN $2 > ELSE $1 || ', ' || $2 > END$_$; > CREATE AGGREGATE list ( > BASETYPE = text, > SFUNC = comma_cat, > STYPE = text, > INITCOND = '' > ); > > Muchas gracias por su ayuda, saludos > Saludos, Gilberto Castillo ETECSA, La Habana, Cuba - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda