2009-10-15 12 views
8

mam 3 tabele,pełnotekstowego wyszukiwania przy użyciu wielu tabel w SQL

  1. tblBook(BookID, ISBN, Title, Summary)
  2. tblAuthor(AuthorID, FullName)
  3. tblBookAuthor(BookAuthorID, BookID, AuthorID)

tblBookAuthor pozwala na jednej książki posiadanie wielu autorów i autor może napisałem dowolną liczbę książek.

Używam wyszukiwanie pełnotekstowe, aby szukać rankingu bazę na słowa:

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] 

Powyższy kod działa poprawnie tylko szukają tblBook tabeli. Ale teraz chciałbym przeszukać tabelę tblAuthor na podstawie szukanego słowa kluczowego.

Czy możesz mi w tym pomóc?

Odpowiedz

3

Możesz uruchomić kolejne zapytanie SELECT/CONTAINSTABLE na tblAuthor, połączyć wyniki razem i zawinąć z innym zapytaniem, które sumuje kolumnę Rank in the Key, aby usunąć wszystkie duplikaty i wypchnąć wyniki, przy czym zarówno tblBook, jak i tblAuthor odpowiadają wyżej.

Myślę, że to pozwoli osiągnąć to, czego próbujesz.

Powiązane problemy