Вопрос немного сбивает с толку, но я думаю, что вам нужно:
1) Способ анализа пользовательского ввода (например, "Lord Ring") в отдельные ключевые слова (например, ("Lord", "Ring")). Желательно, чтобы это делалось на уровне приложения, но может быть выполнено в SQL / PSQL / TSQL, т. Е. Практически в любой разновидности SQL.
2) SQL-запрос, подобный этому (полученный из решения Дарена Швенке)
SELECT SKU, COUNT(*) AS Ranking
FROM tblKeyWords T1 -- or whatever the name
WHERE Keyword IN ('Lord', 'Ring') -- here the keywords
AND KeywordType = 'T' -- Optionally be specific on type
AND SKU IN ( -- filter to only take items that are DVDs
SELECT SKU
FROM tblKeywords
WHERE KeywordType = 'X' AND Keyword = 'DVD'
)
GROUP BY SKU
ORDER BY COUNT(*) DESC
Примечание : эффективность этой структуры для выполнения того, что по сути является формой полнотекстового поиска, оставляет желать лучшего. Ситуацию можно помочь, введя правильные индексы с первого взгляда, которые могут нам понадобиться как минимум
- (Ключевое слово, SKU)
- (KeywordType, Keyword, SKU)
Несколько других вещей могут помочь, например, исключение нескольких «шумовых слов», таких как «OF», «THE», «A», «TO» из индекса (и, конечно, из критериев поиска, предоставленных концом -Пользователи)
Но в целом может быть хорошей идеей оценить мудрость работы с этой структурой; это может иметь смысл с конкретным приложением под рукой, OP - единственный, кто знает это ...