SELECT Nombres ???

08/06/2006 - 06:19 por Pablo Rodríguez | Informe spam
Hola,
tengo 2 tablas,

tblUno (Id, Campo, Campo2)
tblDos(Id, IdUno, Nombre)

necesito una función que me devuelva por ejemplo:

"Nombre1, Nombre2, Nombre3"

siempre que se cumpla que tblDos.IdUno = tblUno.Id

Se entiende??

Saludos!

Preguntas similare

Leer las respuestas

#1 qwalgrande
08/06/2006 - 08:58 | Informe spam
Hola.

Mira a ver si esto te da una pista. Ojo, has de tener en cuenta que si tu
tabla tiene muchos registros es posible que la variable de 8000 caracteres
se llene. Si este fuera el caso, explícanos un poco más en detalle para qué
necesitas la función porque esto que te propongo está bien para unos pocos
valores.

create function uf_CadenaNombres (@pIdUno int) returns varchar(8000)
begin
declare @ret varchar(8000)
select @ret = ''
if @pIdUno = -1
select @ret = @ret + tblDos.Nombre + ', '
from tblUno inner join tblDos on tblDos.IdUno = tblUno.Id
else--Si me han pasado un valor @pIdUno y solo quiero estos en particular
select @ret = @ret + tblDos.Nombre + ', '
from tblDos where tblDos.IdUno = @pIdUno

if len(@ret) > 0
select @ret = left(rtrim(@ret), len(rtrim(@ret)) -1)

return @ret

end

Si hay algún error en la sintaxis, me disculpas. Si hay algo que no se
entienda, me comentas.

Alberto López Grande (qwalgrande)


"Pablo Rodríguez" escribió en el mensaje
news:
Hola,
tengo 2 tablas,

tblUno (Id, Campo, Campo2)
tblDos(Id, IdUno, Nombre)

necesito una función que me devuelva por ejemplo:

"Nombre1, Nombre2, Nombre3"

siempre que se cumpla que tblDos.IdUno = tblUno.Id

Se entiende??

Saludos!

Respuesta Responder a este mensaje
#2 Pablo Rodríguez
08/06/2006 - 16:26 | Informe spam
Si, creo que esto es lo que buscaba, ya lo voy a pasar al SQL, el asunto es
que tengo una relacion 1 .. *, y para mostrar un listado quisiera sacar en
un solo campo los strings de un campo que corresponderían en la otra tabla,
es al solo efecto de mostrar todos en una sola fila.
De todas maneras no creo que sean muchos registros como para sobrepasar el
límite de 8000.

Saludos


"qwalgrande" escribió en el mensaje
news:
Hola.

Mira a ver si esto te da una pista. Ojo, has de tener en cuenta que si tu
tabla tiene muchos registros es posible que la variable de 8000 caracteres
se llene. Si este fuera el caso, explícanos un poco más en detalle para
qué necesitas la función porque esto que te propongo está bien para unos
pocos valores.

create function uf_CadenaNombres (@pIdUno int) returns varchar(8000)
begin
declare @ret varchar(8000)
select @ret = ''
if @pIdUno = -1
select @ret = @ret + tblDos.Nombre + ', '
from tblUno inner join tblDos on tblDos.IdUno = tblUno.Id
else--Si me han pasado un valor @pIdUno y solo quiero estos en particular
select @ret = @ret + tblDos.Nombre + ', '
from tblDos where tblDos.IdUno = @pIdUno

if len(@ret) > 0
select @ret = left(rtrim(@ret), len(rtrim(@ret)) -1)

return @ret

end

Si hay algún error en la sintaxis, me disculpas. Si hay algo que no se
entienda, me comentas.

Alberto López Grande (qwalgrande)


"Pablo Rodríguez" escribió en el mensaje
news:
Hola,
tengo 2 tablas,

tblUno (Id, Campo, Campo2)
tblDos(Id, IdUno, Nombre)

necesito una función que me devuelva por ejemplo:

"Nombre1, Nombre2, Nombre3"

siempre que se cumpla que tblDos.IdUno = tblUno.Id

Se entiende??

Saludos!





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida