关键字数据库查询

时间:2011-06-22 19:49:55

标签: mysql database

我有以下表格:

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'

此表中有多个kwywords。

我正在建造一个简单的搜索引擎 - 我需要展示符合多个标准的产品,例如:
选择产品,其中atcode ='type'和valcode ='wifi'和valcode ='品牌'和'valcode'='索尼'

我是否需要在这里为每组参数应用自联接?

现在我有以下查询:

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 :(得分:0)

一种方法是,对于每个匹配,您可以使用EXISTS子查询。

AND EXISTS (select 1 from products_match 
            where id_prod = a.id_prod
            and atcode = 'type' and valcode = 'wifi')