Re: Consulta sobre funcion coalesce

From: Álvaro Hernández Tortosa <aht(at)Nosys(dot)es>
To: Fernando Siguenza <fsigu(at)hotmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta sobre funcion coalesce
Date: 2011-07-11 21:06:09
Message-ID: 20110711210609.GD12026@nosys.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Mon, Jul 11, 2011 at 04:02:25PM -0400, Alvaro Herrera escribió:

>
>Estás equivocado, no retorna nulo; retorna cero registros, que no es lo
>mismo. Si no hay un valor nulo al no haber registros, obviamente
>coalesce() no hará nada porque no será invocado.

Efectivamente, ese era el problema

>
>> Como podria hace lo que necesito???
>
>Creo que tendrías que hacer un UNION ALL, algo así:
>
>select numero from documentos where codigo = 'FA'
>union all
>select 0 where not exists (select numero from documentos where codigo = 'FA')

Consulta muy inteligente que hace exactamente lo que quieres.
Por cierto, se podría hacer un sencillo procedimiento en plpgsql que
diera el mismo resultado y fuera más eficiente (nos podemos ahorrar
repetir la query).

Ahora bien, Fernando, me atrevo a aportar mi granito de arena:
¿es eso lo que quieres? ¡Yo no querría eso!

Me parece "programación por convenio". Para mí no es lo mismo
"hay un resultado, donde número es 0" que "no hay resultados". Supongo
que 'numero' no puede valer nunca "0", pero ¿quién lo garantiza? ¿Tienes
un constraint en la tabla del tipo "CHECK numero <> 0" o similar? ¿Está
documentado? ¿El código de programación que usa la consulta lo deja
implícito en su API?

Si la respuesta a todas las anteriores preguntas no es un sí
rotundo, entonces te recomiendo no hacer esto, y comprobar simplemente
el número de resultados de la query primero (o usar un count como
alternativa). Esto hará el código más legible y menos sensible a fallos.

Saludos,

Álvaro

--

Álvaro Hernández Tortosa

-----------
NOSYS
Networked Open SYStems

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2011-07-12 02:34:17 RE: Instalar postgresql-9.0.4 en debian 6.0
Previous Message Alvaro Herrera 2011-07-11 20:02:25 Re: Consulta sobre funcion coalesce