2011-06-22 98 views
0

数据库查询我有以下表格:通过关键词

products_match:

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

产品:products_match表

asin varchar(15) 
title varchar(155) 

示例内容:

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

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

有多种kwyword s在这张桌子里。

我在建立一个简单的搜索引擎 - 我需要展示符合多个条件的产品,例如:
选择atcode ='type'AND valcode ='wifi'AND valcode ='brand'AND'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 

但它没有返回的产品。

任何人都可以帮我解决这个问题吗?

编辑
有人告诉我,我应该使用一个自连接每一个组关键字。你怎么看?

回答

0

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

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

由于整个查询是由PHP生成的,因此可能存在问题。 –

+0

@John我不知道为什么..这是常见的动态生成查询并使用此方法。 – Fosco