对于这个例子,假设我的数据库中有三个表。
产品
过滤器
product_filters
我想根据他们正在查看的当前产品的过滤器向访问者推荐产品。
product_filters表可能包含以下数据
id | product_id | filter_id
======================================
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
5 | 3 | 1
6 | 3 | 2
7 | 5 | 1
8 | 5 | 8
9 | 5 | 7
在这种情况下,当用户打开产品1时,会发生以下统计信息'
product equals filters
------------------------------------------
product 2 1 (1) 1
product 3 2 (1,2) 2
product 4 0 0
product 5 1 (1) 3
为了给用户提供最佳的相关结果,我想按以下顺序返回最匹配的x数量的产品:
上述情况中的顺序是。
3,2,5,4
我总是需要一定数量的结果。
我现在有什么。
计算过滤器数量,限制为x结果。
SELECT product_id, count(product_id)
FROM product_filters
GROUP BY product_id LIMIT 5;
计算相等过滤器的数量
SELECT product_id, count(product_id)
FROM product_filters
WHERE filter_id = 1
OR filter_id = 2
OR filter_id = 3
GROUP BY product_id;
我怎么能以一种总是得到x结果的方式组合这些查询(即使没有匹配)?