2009-10-15 55 views
8

我有3個表,全文搜索使用多個表中的SQL

  1. tblBook(BookID, ISBN, Title, Summary)
  2. tblAuthor(AuthorID, FullName)
  3. 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] 

上面的代碼工作正常,只是在尋找tblBook表。但現在我想根據搜索到的關鍵字搜索表tblAuthor

你能幫我嗎?

回答

3

您可以在tblAuthor上運行另一個SELECT/CONTAINSTABLE查詢,將結果聯合在一起,並與另一個查詢結合在一起,從而刪除任何重複項,並且推送結果與tblBook和tblAuthor都匹配得更高。

我認爲這將實現你正在嘗試的待辦事項。