Cae*_*sar 8 sql t-sql sql-server full-text-search
我有3张桌子,
tblBook(BookID, ISBN, Title, Summary)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, ISBN, @Word, LANGUAGE 'English') AS ISBNResults
FULL OUTER JOIN
CONTAINSTABLE(tblBook, Title, @Word, LANGUAGE 'English') AS TitleResults
ON ISBNResults.[KEY] = TitleResults.[KEY]
FULL OUTER JOIN
CONTAINSTABLE(tblBook, Summary, @Word, LANGUAGE 'English') AS SummaryResults
ON ISBNResults.[KEY] = SummaryResults.[KEY]
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于搜索tblBook表.但现在我想根据搜索的tblAuthor关键词搜索表格.
你能帮帮我吗?
您可以在 tblAuthor 上运行另一个 SELECT/CONTAINSTABLE 查询,将结果合并在一起并与另一个查询包装在一起,该查询对键列上的排名进行求和,以删除任何重复项,并将 tblBook 和 tblAuthor 匹配的结果推送到更高的位置。
我认为这将实现您想要做的事情。