RE: Problemas con subconsulta

From: "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar>
To: <daniel(dot)ferrer(at)ctd(dot)com(dot)ar>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Problemas con subconsulta
Date: 2009-10-27 13:09:09
Message-ID: 8E2434A2358A41868295DC97FF2D8595@iptel.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> -----Mensaje original-----
> De: Daniel Ferrer
>
> Estimados:
> Tengo un problema (en realidad, no se como
> parsearlo) con una subconsulta, que me devuelve un "int",
> pero necesito convertirlo a "varchar" y como todo la tupla va
> concatenada, no puedo generarla.(creo que ese el error)
> porque me devuelve una cadena vacía.
>
> El ejemplo seria:
>
> SELECT (a.nombre || ' cantidad: ' || (Select sum(b.cantidad)
> FROM tabla_b b WHERE b.id = a.id) || '.' ) AS registro FROM
> tabla_a a WHERE a.id = 6
>
> el resultado que espero debería ser algo así:
> "nombre cantidad: 3."
>
> Si alguien me puede dar una mano...
>
>

Si ese fuese el error, la solución tuya sería castear el resultado de la
subconsulta:

SELECT (a.nombre || ' cantidad: ' || (Select sum(b.cantidad)::text
FROM tabla_b b WHERE b.id = a.id) || '.' ) AS registro FROM
tabla_a a WHERE a.id = 6

Pero ese no es el error ya que Postgres soporta la concatenación entre un
texto y un entero.

Lo más probable es que no exista el id = 6 en tabla_b.
En tal caso modifica tu consulta a la siguiente:

SELECT (a.nombre || ' cantidad: ' || (Select COALESCE(sum(b.cantidad), 0)
FROM tabla_b b WHERE b.id = a.id) || '.' ) AS registro FROM
tabla_a a WHERE a.id = 6

Saludos.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fabio Arias 2009-10-27 15:00:10 RESTAURAR BACKUP SIN DATOS
Previous Message Ezequiel - 2009-10-27 13:07:45 Re: Problemas con subconsulta