Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

consulta.......

Estas en el tema de consulta....... en el foro de SQL Server en Foros del Web. Hola a todos!!!!!! tengo una pequeña duda.... Yo tengo una consulta digamos de libros cierto cada libro esta relacionado con materias entonces un libro puede ...
  #1 (permalink)  
Antiguo 06/10/2006, 15:58
Avatar de kejos  
Fecha de Ingreso: septiembre-2005
Mensajes: 100
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta consulta.......

Hola a todos!!!!!!
tengo una pequeña duda....
Yo tengo una consulta digamos de libros cierto cada libro esta relacionado con materias entonces un libro puede estar relacionadocon varias materias lo que yo quiero es que cuando ya haga una consulta de libros y materias si el libro esta relacionado con varias materias no me salga el numero de veces que esta relacionado con alguna materia sino que me salga el libro una vez y en un campo las materias que esten relacionadas con el libro.
Alguien me puede dar una idea de cómo hacer esto? teniendo en cuenta que es una vista que estoy haciendo para abrirla desde excel.
muchas gracias por toda la colaboración que puedan brindarme
__________________
Kelly Johana:si:
  #2 (permalink)  
Antiguo 09/10/2006, 15:40
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 19 años, 8 meses
Puntos: 0
De acuerdo

Bueno, lo que se me ocurre es que puedes armar en un campo las materias relacionadas a cada libro y mostrarlo de esa manera.... (bueno, si!!, eso es lo que buscas )... me explico.

Lista todos los libros y en la misma consulta creas un campo que contenga una el resultado de una funcion. En esa funcion armas el campo que contenga todas las materias asociadas al libro.

El procedimiento luciria algo asi como:


CREATE FUNCTION dbo.concatena (@COD_LIBRO varchar(10))
RETURNS varchar(5000) AS
BEGIN
declare @retvalue varchar(5000)
set @retvalue=''
select @retvalue = @retvalue +ltrim(rtrim(isnull(DESC_MATERIA,'')))+' - '
from (select DESC_MATERIA from MATERIAS M where M.COD_LIBRO=@COD_LIBRO) as tmp_tbl
if len(@retvalue)>1 begin
set @retvalue = substring(@retvalue,1,len(@retvalue)-1)
end
return @retvalue
END


y el select luciria algo asi:

Select cod_libro,nombre_libro,dbo.concatena(cod_libro) from
libros


Lo que esta en rojo en la funcion debes cambiarlo por los nombres que correspondan a tu tabla y campos, ok? espero que te funcione...


saludos
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan

Última edición por claray; 09/10/2006 a las 15:42 Razón: me falto completar
  #3 (permalink)  
Antiguo 09/10/2006, 15:43
Avatar de kejos  
Fecha de Ingreso: septiembre-2005
Mensajes: 100
Antigüedad: 18 años, 7 meses
Puntos: 0
Gracias por tu respuesta la pondre en práctica
__________________
Kelly Johana:si:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:44.