SQL Server:搜索标记存储过程

时间:2015-04-05 12:28:42

标签: sql-server stored-procedures

我有这个存储过程在MSSQL2012中显示单个标记(分页)。

有3个表,StockItems,文件和标签 每个StockItem可以包含更多标签和一个图像文件。

如何通过返回相关的stockitem和图像文件来修改此存储过程以返回多标签的搜索?

CREATE procedure [dbo].[GetTagPaged](
    @KeyWordFilter varchar(50),
    @PageNumber int = 1)          
as
begin
    declare @PageSize int = 50
    declare @FirstRow int
    declare @LastRow int
    declare @TotalRows int

    SELECT      
        @FirstRow = (@PageNumber - 1) * @PageSize + 1,
        @LastRow = (@PageNumber - 1) * @PageSize + @PageSize;

   SELECT 
       @TotalRows = COUNT(*) 
   FROM
       [StockItem] q 
   INNER JOIN 
       [Tags] k ON q.id = k.StockItemId 
   INNER JOIN 
       [Files] qi ON q.Id = qi.ItemId 
   WHERE
       k.Keyword = @KeyWordFilter;

with Results as
(                  
      SELECT            
         q.*, qi.FileName
         , ROW_NUMBER() over (Order By q.Rating DESC) as Instance_Count
         , @TotalRows as the_Count
      FROM 
         [StockItem] q
      INNER JOIN 
         [Tags] k ON q.id = k.StockItemId
      INNER JOIN 
         [Files] qi ON q.Id = qi.ItemId
      WHERE 
         k.Keyword = @KeyWordFilter
    )            
    select *
    from results
    where Instance_Count between @FirstRow and @LastRow
    order by Instance_Count asc                  
end

0 个答案:

没有答案