FullText使用SQL中的多个表进行搜索

前端之家收集整理的这篇文章主要介绍了FullText使用SQL中的多个表进行搜索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有3张桌子,

> tblBook(BookID,ISBN,标题,摘要)
> tblAuthor(AuthorID,FullName)
> tblBookAuthor(BookAuthorID,BookID,AuthorID)

tblBookAuthor允许一本书有多个作者,作者可能已经写了任意数量的书.

我使用全文搜索搜索单词的排名基础:

SET @Word = 'FORMSOF(INFLECTIONAL,"' + @Word + '")'

SELECT 
  COALESCE(ISBNResults.[KEY],TitleResults.[KEY],SummaryResults.[KEY]) AS [KEY],ISNULL(ISBNResults.Rank,0) * 3 +
  ISNULL(TitleResults.Rank,0) * 2 +
  ISNULL(SummaryResults.Rank,0) AS Rank
FROM
  CONTAINSTABLE(tblBook,@Word,LANGUAGE 'English') AS ISBNResults
  FULL OUTER JOIN 
    CONTAINSTABLE(tblBook,Title,LANGUAGE 'English') AS TitleResults 
    ON ISBNResults.[KEY] = TitleResults.[KEY]
  FULL OUTER JOIN
    CONTAINSTABLE(tblBook,Summary,LANGUAGE 'English') AS SummaryResults 
    ON ISBNResults.[KEY] = SummaryResults.[KEY]

上面的代码适用于只搜索tblBook表.但是现在我想根据搜索到的关键词搜索表tblAuthor.

你能帮我解决这个问题吗?

解决方法

您可以在tblAuthor上运行另一个SELECT / CONTAINSTABLE查询,将结果合并在一起,并使用另一个查询进行换行,该查询对Rank列上的Rank进行求和,以删除任何重复项,并将tblBook和tblAuthor的结果匹配得更高.

我认为这将实现你正在尝试的东西.

猜你在找的MsSQL相关文章