Запрос к базе данных по ключевым словам - PullRequest
0 голосов
/ 22 июня 2011

У меня есть следующие таблицы:

products_match:

atcode  varchar(6)
valcode varchar(100)
id_prod varchar(15)

продуктов:

asin varchar(15)
title varchar(155)

Пример содержимого таблицы products_match:

atcode='type'
valcode='wifi'
id_prod='1SC52DD'

atcode='type'
valcode='ram'
id_prod='11DD5ER'

В этой таблице несколько ключевых слов.

Я создаю простую поисковую систему - мне нужно отобразить продукты, соответствующие нескольким критериям, например:
выберите продукты, где atcode = 'type' AND valcode = 'wifi' AND valcode = 'brand' AND 'valcode' = 'Sony'

Нужно ли применять самостоятельные объединения для каждой группы аргументов здесь?

Сейчас у меня следующий запрос:

SELECT * FROM products_match a
JOIN products b ON a.id_prod=b.asin
JOIN assortment_match c ON a.id_prod=c.id_prod
WHERE c.atcode='brand' AND c.valcode='sony'
ORDER BY sales_rank ASC LIMIT 0,60

однако продукт не возвращается.

Кто-нибудь может мне помочь решить эту проблему?

Редактировать
Мне сказали, что я должен использовать одно самостоятельное соединение для каждой группы ключевых слов. Что ты думаешь?

1 Ответ

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

Один метод заключается в том, что для каждого совпадения вы можете использовать подзапрос EXISTS.

AND EXISTS (select 1 from products_match 
            where id_prod = a.id_prod
            and atcode = 'type' and valcode = 'wifi')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...