Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > SQL Server

Respuesta
 
Herramientas Desplegado
Antiguo 28-abr-2006, 15:24   #1 (permalink)
Dabeto ha deshabilitado el karma
 
Fecha de Ingreso: abril-2006
Mensajes: 2
Pregunta Como concatenar la informacion de varios registros en un solo campo

Bueno aqui les envio un poco mas de informacion.

Resulta que estoy trabajando un proyecto para una biblioteca, en el momento tengo que realizar una consulta en la que necesito mostrar en un solo registro el titulo del libro, todos los autores y la signatura topografica del libro.

Tengo una tabla con los libros, y otra con los autores, como un libro puede tener uno o mas autores, la consulta me retorna el mismo registro el numero de veces como autores tenga el libro.

Lo que necesito como ya mencione anteriormente es que los nombres de los autores me salgan en un solo registro.
Dabeto está desconectado   Responder Citando
Antiguo 28-abr-2006, 15:39   #2 (permalink)
PequeñoMauro está en el buen camino
 
Avatar de PequeñoMauro
 
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 599
Enviar un mensaje por MSN a PequeñoMauro
Puedes crear una función a la que le mandas como parámetro el código del libro, con ese parámetro haces la consulta de cuantos autores tiene. Es decir en la función usas un cursor en el cual estaria la consulta de cuantos autores tiene el libro.
Recorres el cursor y por registro vas concatenando los autores y guardandolo en una variable....
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
PequeñoMauro está desconectado   Responder Citando
Antiguo 05-may-2006, 15:06   #3 (permalink)
claray ha deshabilitado el karma
 
Avatar de claray
 
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Esta funcion lo hace... le pasas un numero que esta asociando los valores a otra tabla y te devuelve los campos concatenados (fijate que le pone una coma para separar):

CREATE FUNCTION dbo.concatena (@numero varchar(10))
RETURNS varchar(5000) AS
BEGIN
declare @retvalue varchar(5000)
set @retvalue=''

select @retvalue = @retvalue +ltrim(rtrim(isnull(NOMBRE,'')))+','
from (select nombre from TABLA_ORIGEN as s where s.numero = @numero) as tmp_tbl

return substring(@retvalue,1,len(@retvalue)-1)

END


saludos y suerte
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
claray está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 04:49.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93