我有一个产品表,另一个用于标签,有一个用于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查询
答案 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
更改为排除原始产品