我有以下表格结构:
pizza_tags
id
pizza_id
tag_id
order_tags
id
order_id
tag_id
--
tags
id
tag (text)
每个比萨饼,以及一个订单,可以有多个标签。
问题是如何为给定的订单(订单号)找到最好的披萨。比萨和订单的“匹配”标签越多,我们就可以找到任何给定订单的更好的比萨。
我尝试了一些带有交集和连接的不同SQL查询,但没有找到一个或多或少能解决所述问题的快速查询。
请告知。
最佳答案
这个想法是将tag_id
上的两个标记表连接起来。剩下的只是聚合、过滤和计数。
select ot.order_id, count(*) as NumMatching
from order_tags ot join
pizza_tags pt
on ot.tag_id = pt.tag_id
where pt.pizza_id = @PIZZA_ID
group by ot.order_id
order by NumMatching desc;
关于mysql - MySQL:按对象的通用标签匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36321040/