SQL Server - consulta..........

 
Vista:

consulta..........

Publicado por Kelly Johana (9 intervenciones) el 06/10/2006 23:52:57
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta..........

Publicado por Edgar (44 intervenciones) el 07/10/2006 17:13:39
hola lo q puedes hacer es crear un store procedure y hacer lo siguiente
digamos q tu tabla de libros se llame LIBRO y tu tabla materiales se llama MAT
solo cpoia la siguiente sintaxis

CREATE PROCEDURE EJEMPLO
AS

DECLARE @filas INT, @contar INT
DECLARE @cadena VARCHAR(30)
DECLARE @cod_lib INT, mat VARCHAR(30)
DECLARE @filas2 INT, @contar2 INT

CREATE TABLE #TABLA
( COD IDENTITY(1,1) INT,
LIBRO VARCHAR(20) NULL,
COD_LIBR INT NULL,
MATERI VARCHAR(30) NULL
)

INSERT INTO TABLA (LIBRO, COD_LIBRO)
SELECT LIBRO (DESC_LIBRO, COD_LIBRO)

SELECT @filas = MAX(COD) FROM #TABLA
SET @contar = 0

WHILE @contar <= @filas
BEGIN
SET @contar = @contar + 1
SELECT @cod_lib = COD_LIBR FROM #TABLA WHERE COD = @contar

CREATE TABLE #TABLA2
( COD IDENTITY(1,1) INT,
MAT VARCHAR(20) NULL)

INSERT INTO #TABLA2 (MAT) SELECT DESC_MATERIAL FROM MAT WHERE COD_LIBRO = @cod_lib

SELECT @filas2 = MAX(COD) FROM #TABLA2
SET @contar2 = 0

WHILE @contar2 <= @filas2
BEGIN
SET @contar2 = @contar2 + 1
SET @cadena = '' + @cadena + ',' + (SELECT MAT FROM #TABLA2 WHERE COD = @contar2)
END

DROP TABLE #TABLA2

UPDATE #TABLA
SET MATERI = @cadena
WHERE COD = @contar
END

SELECT * FROM #TABLA
DROP TABLE #TABLA

eespero este codigo te ayude
Saludos desde Lima Peru
Edgar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar