CREATE PROCEDURE dbo.spObtenerBusquedaOMaterialesTCampos
@CamposBuscar varchar(250),
@IDTipoMaterial int
AS
DECLARE @NombreAutor VARCHAR(1000)
DECLARE @NAutores varchar(250)
DECLARE @IDLibro int
DECLARE @IDLibro2 int
DECLARE @NIDLibro int
DECLARE @Clasif varchar(20)
DECLARE @Clasif2 VARCHAR(20)
DECLARE @IDTMat int
DECLARE @IDTMat2 int
DECLARE @LibAnt INT
DECLARE @LibSig INT
DECLARE @Titulo VARCHAR(250)
DECLARE @Titulo2 VARCHAR(250)
SET @NombreAutor = ''
SET @NAutores = ''
SET @Clasif2 = ''
set @IDLibro2 = 0
SET @IDTMat2 = 0
CREATE TABLE #LibAut (IDLibro INT, Titulo VARCHAR(250), Autores VARCHAR(2000), Clasificacion VARCHAR(20), IDTipoMaterial INT)
DECLARE Autores_Cursor CURSOR FOR
SELECT TOP 300 dbo.OtrosMateriales.IDMaterial, dbo.OtrosMateriales.Titulo, dbo.Autores.Nombre + ' ' + dbo.Autores.Apellidos AS Autor, dbo.OtrosMateriales.Clasificacion, dbo.OtrosMateriales.IDTipoMaterial
FROM Materias RIGHT OUTER JOIN dbo.OtrosMaterialesMaterias ON dbo.Materias.IDMateria = dbo.OtrosMaterialesMaterias.IDMateria RIGHT OUTER JOIN dbo.OtrosMateriales ON dbo.OtrosMaterialesMaterias.IDMaterial = dbo.OtrosMateriales.IDMaterial LEFT OUTER JOIN dbo.OtrosMaterialesAutores ON dbo.OtrosMateriales.IDMaterial = dbo.OtrosMaterialesAutores.IDMaterial LEFT OUTER JOIN dbo.Autores ON dbo.OtrosMaterialesAutores.IDAutor = dbo.Autores.IDAutor
WHERE (dbo.OtrosMateriales.IDMaterial IN (SELECT OtrosMateriales.IDMaterial FROM OtrosMateriales LEFT OUTER JOIN Ejemplares ON Ejemplares.IDMaterial = OtrosMateriales.IDMaterial LEFT OUTER JOIN OtrosMaterialesAutores ON OtrosMateriales.IDMaterial = OtrosMaterialesAutores.IDMaterial LEFT OUTER JOIN Autores ON OtrosMaterialesAutores.IDAutor = Autores.IDAutor WHERE (Ejemplares.CodigoAcceso = @CamposBuscar OR OtrosMateriales.Titulo LIKE '%' + @CamposBuscar + '%' OR Autores.Nombre LIKE '%' + @CamposBuscar + '%' OR Autores.Apellidos LIKE '%' + @CamposBuscar + '%' OR OtrosMateriales.Clasificacion LIKE @CamposBuscar + '%' OR (Autores.Nombre + ' ' + Autores.Apellidos) LIKE '%' + @CamposBuscar + '%' OR Materias.Materia LIKE '%' + @CamposBuscar + '%') AND OtrosMateriales.IDTipoMaterial = @IDTipoMaterial AND OtrosMateriales.Titulo IS NOT NULL GROUP BY OtrosMateriales.IDMaterial))
OPEN Autores_Cursor
FETCH NEXT FROM Autores_Cursor INTO @IDLibro,@Titulo,@NombreAutor, @Clasif, @IDTMat
SET @LibAnt = @IDLibro
SET @LibSig = @IDLibro
WHILE @@FETCH_STATUS = 0
BEGIN
IF @LibAnt = @LibSig AND @NAutores <> ''
BEGIN
SET @NAutores = @NAutores + ', '
END
IF @LibAnt = @LibSig
BEGIN
SET @NAutores = @NAutores + @NombreAutor
SET @LibAnt = @LibSig
SET @IDLibro2 = @IDLibro
SET @Titulo2 = @Titulo
SET @Clasif2 = @Clasif
SET @IDTMat2 = @IDTMat
END
ELSE
BEGIN
INSERT INTO #LibAut (IDLibro, Titulo, Autores, Clasificacion, IDTipoMaterial)
Select @IDLibro2,@Titulo2 ,@NAutores, @Clasif2, @IDTMat2
SET @NAutores = ''
SET @NAutores = @NombreAutor
SET @LibAnt = @LibSig
SET @IDLibro2 = @IDLibro
SET @Titulo2 = @Titulo
SET @Clasif2 = @Clasif
SET @IDTMat2 = @IDTMat
END
FETCH NEXT FROM Autores_Cursor INTO @IDLibro, @Titulo, @NombreAutor, @Clasif, @IDTMat
SET @LibSig = @IDLibro
END
CLOSE Autores_Cursor
DEALLOCATE Autores_Cursor
INSERT INTO #LibAut (IDLibro, Titulo, Autores, Clasificacion, IDTipoMaterial)
Select @IDLibro2,@Titulo2 ,@NAutores,@Clasif2, @IDTMat2
delete from #LibAut where Titulo is null or Titulo = ''
select IDLibro as IDMaterial,Titulo, Autores as Nombre, Clasificacion, IDTipoMaterial from #LibAut
--DROP TABLE #LibAut
GO