Re: ayuda con funcion List

From: Igniris <ivaldivia(at)xetid(dot)cu>
To: Hellmuth Vargas <hivs77(at)gmail(dot)com>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Subject: Re: ayuda con funcion List
Date: 2015-10-09 13:24:04
Message-ID: 5617BFF4.1030406@xetid.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda pgsql-general

Muchas gracias Hellmuth probe con tu solucion y en la consulta funciono,
pero cuando lo pongo en la funcion de la app reaal me da error de
sintaxis como este:

|'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[42601]: Syntax||error: 7 si lo quito y lo pongo como estaba funciona pero con la
deficiencia que les comentaba inicialmente, saludos y gracias |

El 07/10/2015 a las 08:46 a. m., Hellmuth Vargas escribió:
> Hola Igniris
>
> Pruebalo con string_agg así:
>
>
> SELECT
> string_agg(distinct p.nombre,',') as prod,
> string_agg(distinct fa.forma,',') as forma
> FROM
> public.producto p
> INNER JOIN public.productoformaadquisclugar pfl ON (p.id
> <http://p.id/> = pfl.idproducto)
> INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id
> <http://fa.id/>)
>
> El 7 de octubre de 2015, 9:37 a. m., Igniris<ivaldivia(at)xetid(dot)cu
> <mailto:ivaldivia(at)xetid(dot)cu>> escribió:
>
> 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
> <http://p.id> = pfl.idproducto)
> INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id
> <http://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 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
>
>
>
>
> --
> Cordialmente,
>
> Ing. Hellmuth I. Vargas S.
> Esp. Telemática y Negocios por Internet
> Oracle Database 10g Administrator Certified Associate
> EnterpriseDB Certified PostgreSQL 9.3 Associate
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2015-10-09 18:36:34 Re: ayuda con funcion List
Previous Message Anthony Sotolongo 2015-10-09 12:48:19 Re: ayuda con funcion List

Browse pgsql-general by date

  From Date Subject
Next Message Albe Laurenz 2015-10-09 13:25:10 Re: Drop or alter column under load give ERROR #42804 structure of query does not match function result type:
Previous Message Adrian Klaver 2015-10-09 13:00:38 Re: Drop or alter column under load give ERROR #42804 structure of query does not match function result type: