通过匹配标记

时间:2015-07-27 22:41:44

标签: php mysql

我尝试使用mysql在自定义php站点中为产品制作相关算法。

我有一个产品表,另一个用于标签,有一个用于products_tags的关系表。

鉴于产品,我必须按照匹配标签的数量查找产品,并提供产品。

示例:

Product 1 tags: tag1, tag2, tag3, tag4.
Product 2 tags: tag2.
Product 3 tags: tag1, tag2, tag4.
Product 4 tags: tag1, tag5, tag2.

结果:

产品1相关:

产品3(3场比赛)

产品4(2场比赛)

产品2(1匹配)

我们的想法是只使用一个mysql查询

2 个答案:

答案 0 :(得分:1)

  

SELECT COUNT(1)AS count1,pt1.product_id FROM product_tags pt1 WHERE   tag_id in(select product_id from product_tags WHERE product_id =?) AND product_id!=? GROUP   BY pt1.product_id ORDER BY count1 DESC

答案 1 :(得分:0)

SELECT COUNT(1) AS count1, pt1.product_id FROM product_tags pt1 WHERE tag_id in (select tag_id from product_tags WHERE product_id = ?) AND product_id != ? GROUP BY pt1.product_id ORDER BY count1 DESC

更改为排除原始产品