0
我有一个关于在SQL中搜索的问题。我们有一段代码负责搜索我们网站内的一组内容。当我们写出StaticContent算法时,它运行良好。在添加ContribContent(第2和第4个参数)之后,它似乎不起作用。你有什么想法,为什么?带有新的SearchContent函数的SQL搜索问题
非常感谢!
ALTER PROCEDURE [dbo].[SearchContent]
@PageNumber tinyint,
@ResultsPerPage tinyint,
@HowManyResults smallint output,
@AllWords bit,
@Word1 varchar(15) = null,
@Word2 varchar(15) = null,
@Word3 varchar(15) = null,
@Word4 varchar(15) = null,
@Word5 varchar(15) = null
AS
BEGIN
DECLARE @Content TABLE
(RowNumber smallint IDENTITY (1,1) NOT NULL,
ContentID int,
Title varchar(50),
UserID int,
Summary text,
FirstName varchar(50),
LastName varchar(50),
Picture varchar(100),
Type varchar(50),
Rank int
)
IF @AllWords = 0
INSERT INTO @Content
SELECT ContribContent.ContentID, ContribContent.Title, ContribContent.UserID,
SUBSTRING(Article, 1, 300) + '...' AS Summary, Users.FirstName, Users.LastName, Users.Picture, 'Contributed Content' AS Type,
3 * dbo.WordCount(@Word1, Title) + dbo.WordCount(@Word1, Article) +
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article) +
3 * dbo.WordCount(@Word3, Title) + dbo.WordCount(@Word3, Article) +
3 * dbo.WordCount(@Word4, Title) + dbo.WordCount(@Word4, Article) +
3 * dbo.WordCount(@Word5, Title) + dbo.WordCount(@Word5, Article)
AS Rank
FROM ContribContent
INNER JOIN Users
ON ContribContent.UserID = Users.UserID
ORDER BY Rank DESC
IF @AllWords = 0
INSERT INTO @Content
SELECT StaticContent.ContentID, StaticContent.Title, StaticContent.UserID,
SUBSTRING(Article, 1, 300) + '...' AS Summary, Users.FirstName, Users.LastName, Users.Picture, 'Static Content' AS Type,
3 * dbo.WordCount(@Word1, Title) + dbo.WordCount(@Word1, Article) +
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article) +
3 * dbo.WordCount(@Word3, Title) + dbo.WordCount(@Word3, Article) +
3 * dbo.WordCount(@Word4, Title) + dbo.WordCount(@Word4, Article) +
3 * dbo.WordCount(@Word5, Title) + dbo.WordCount(@Word5, Article)
AS Rank
FROM StaticContent
INNER JOIN Users
ON StaticContent.UserID = Users.UserID
ORDER BY Rank DESC
IF @AllWords = 1
INSERT INTO @Content
SELECT ContribContent.ContentID, ContribContent.Title, ContribContent.UserID,
SUBSTRING(Article, 1, 300) + '...' AS Summary, Users.FirstName, Users.LastName, Users.Picture, 'Contributed Content' AS Type,
(3 * dbo.WordCount(@Word1, Title) + dbo.WordCount(@Word1, Article)) *
CASE
WHEN @Word2 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END *
CASE
WHEN @Word3 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END *
CASE
WHEN @Word4 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END *
CASE
WHEN @Word5 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END
AS Rank
FROM ContribContent
INNER JOIN Users
ON ContribContent.UserID = Users.UserID
ORDER BY Rank DESC
IF @AllWords = 1
INSERT INTO @Content
SELECT StaticContent.ContentID, StaticContent.Title, StaticContent.UserID,
SUBSTRING(Article, 1, 300) + '...' AS Summary, Users.FirstName, Users.LastName, Users.Picture, 'Static Content' AS Type,
(3 * dbo.WordCount(@Word1, Title) + dbo.WordCount(@Word1, Article)) *
CASE
WHEN @Word2 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END *
CASE
WHEN @Word3 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END *
CASE
WHEN @Word4 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END *
CASE
WHEN @Word5 IS NULL THEN 1
ELSE
3 * dbo.WordCount(@Word2, Title) + dbo.WordCount(@Word2, Article)
END
AS Rank
FROM StaticContent
INNER JOIN Users
ON StaticContent.UserID = Users.UserID
ORDER BY Rank DESC
SELECT @HowManyResults = Count(*)
FROM @Content
WHERE Rank > 0
SELECT ContentID, Title, Title, UserID, Summary, FirstName, LastName, Picture, Type, Rank
FROM @Content
WHERE Rank > 0 AND RowNumber BETWEEN (@PageNumber-1) * @ResultsPerPage+1 AND @PageNumber * @ResultsPerPage
ORDER BY Rank DESC
END
“它似乎没有工作” - 什么是实际问题? – 2010-10-28 00:33:35
好吧,它不像静态一样搜索。在搜索时,它会正确地返回StaticContent,但是对于这个SP的ContribContent – sthomps 2010-10-28 00:37:03
什么都没有,它究竟做了什么? – yonan2236 2010-10-28 01:31:27