Re: [MASSMAIL]ayuda con funcion List

From: "Gilberto Castillo" <gilberto(dot)castillo(at)etecsa(dot)cu>
To: "Igniris" <ivaldivia(at)xetid(dot)cu>
Cc: pgsql-es-ayuda(at)postgresql(dot)org, alvherre(at)alvh(dot)no-ip(dot)org
Subject: Re: [MASSMAIL]ayuda con funcion List
Date: 2015-10-07 15:02:26
Message-ID: 54209.192.168.207.54.1444230146.squirrel@webmail.etecsa.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda pgsql-general


> 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(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Anthony Sotolongo 2015-10-09 12:48:19 Re: ayuda con funcion List
Previous Message Igniris 2015-10-07 14:37:58 ayuda con funcion List

Browse pgsql-general by date

  From Date Subject
Next Message Andrus 2015-10-07 15:11:47 Re: How to drop user if objects depend on it
Previous Message Tom Lane 2015-10-07 14:59:11 Re: How to drop user if objects depend on it