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