Как применить Containstable для двух таблиц соединения? - PullRequest
0 голосов
/ 16 июня 2010

таблица продуктов

pid modelnumber
1      a
2      b
3      c

ProductTransation

pid  name description...
1   ball   ball
2   bat     cricket bat

Я создаю полный текст для Modelnumber в таблице продуктов.

То же для имени и описания в таблице productTransaction.

Теперь я хочу присоединиться к этой таблице, если я ищу по номеру модели или имени

результат должен быть

pid  name  modelnumber 
1     ball  a

1 Ответ

0 голосов
/ 22 июня 2010

В настоящее время я делаю что-то похожее на следующее:

SELECT
        PD.pid,
        PD.name,
        PD.modelnumber
    FROM (
        SELECT
                (
                    COALESCE(ctP.[RANK], -1)
                    +
                    COALESCE(ctPT.[RANK], -1)
                    ) AS [RANK],
                P.pid,
                PT.name,
                P.modelnumber
            FROM Product AS P
            INNER JOIN ProductTranslation AS PT
                ON PT.pid = P.pid
            OUTER APPLY (
                SELECT TOP 1
                            ctP.[KEY],
                            ctP.[RANK]
                    FROM CONTAINSTABLE(
                        Product,
                        *,
                        @Query
                        ) AS ctP
                    WHERE ctP.[KEY] = P.pid
                )
            OUTER APPLY (
                SELECT TOP 1
                            ctPT.[KEY],
                            ctPT.[RANK]
                    FROM CONTAINSTABLE(
                        ProductTranslation,
                        *,
                        @Query
                        ) AS ctPT
                    WHERE ctPT.[KEY] = P.pid
                )
            WHERE
                (
                    ctP.[KEY] IS NOT NULL
                    OR
                    ctPT.[KEY] IS NOT NULL
                    )
        ) AS PD
    ORDER BY PD.[RANK] DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...