按标签搜索类似/相关产品的MYSQL

时间:2014-12-07 02:04:29

标签: php mysql phpmyadmin

我在我的网站上有这3张相似/相关产品的表格

表 - produtos

idproduto | produto

表 - produtos_tags

idtag |标签

表 - produtos_tags_id

id | idproduto | IDTAG

这是mysql查询

 SELECT produtos.idproduto, COUNT(*) AS matchedTags
 FROM produtos 
 INNER JOIN produtos_tags_id 
 ON (produtos_tags_id.idproduto = produtos.idproduto)
 INNER JOIN produtos_tags
 ON (produtos_tags.idtag = produtos_tags_id.idtag)
 WHERE produtos_tags_id.idtag IN( 
                        SELECT produtos_tags_id.idtag 
                        FROM produtos_tags_id 
                        WHERE produtos_tags_id.idproduto = '1') 
 AND produtos.idproduto != '1' 
 GROUP BY produtos_tags_id.idproduto 
 HAVING COUNT(*) > 0

此查询工作正常,选择产品并匹配具有相同标签的其他产品。 我想要的是这个查询使产品之间的关系只产生2个或更多匹配的标签,我尝试不同的东西,但没有成功。

需要一些帮助

1 个答案:

答案 0 :(得分:1)

所以你想要有两个或更多匹配标签的产品?获取ID:

select pt1.idproduto, pt2.idproduto, count(*) as NumInCommon
from produtos_tags pt1 join
     products_tags pt2
     on pt1.idtag = pt2.idtag and pt1.idproduto < pt2.idproduto
group by pt1.idproduto, pt2.idproduto
having count(*) >= 2;

如果您想要与特定产品配对,只需添加相应的where子句:pt2.idproduto = 1