Re: ayuda con funcion List

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

Hola Igniris

Según indica, debe tener una versión que soporta string_agg pues lo
verificó directamente en consola y funcionó, es posible que lo este
molestando es la comillas sencilla (') si esta embebiendo la sentencia en
una cadena. Si puede copiar el pedazo de código donde emplea la sentencia
para poder analizar mejor el problema

>
> >
> > >
> > > 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 =
pfl.idproducto)
> > > INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id)

>
> >
> > >
> > >

El oct. 9, 2015 7:27 AM, "Igniris" <ivaldivia(at)xetid(dot)cu> escribió:

> 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 =
> pfl.idproducto)
> INNER JOIN public.formadeadquisicion fa ON (pfl.idforma = fa.id)
>
> El 7 de octubre de 2015, 9:37 a. m., Igniris<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 =
>> 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 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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Richardson Hinestroza 2015-10-12 02:30:09 checkpoints y disaster recovery anatomy
Previous Message Igniris 2015-10-09 13:24:04 Re: ayuda con funcion List

Browse pgsql-general by date

  From Date Subject
Next Message Selim Tuvi 2015-10-09 18:53:57 Re: BDR: no free replication state could be found
Previous Message Francisco Reyes 2015-10-09 16:31:45 Re: Best way to sync table DML between databases