SQL基于筛选器查找相关产品
对于本例,假设我的数据库中有三个表 产品 名称 身份证件 过滤器 身份证件 名称 产品过滤器 身份证件 产品标识 过滤器id 我想根据访问者正在查看的当前产品的过滤器向他们推荐产品 product_filters表可能包含以下数据SQL基于筛选器查找相关产品,sql,Sql,对于本例,假设我的数据库中有三个表 产品 名称 身份证件 过滤器 身份证件 名称 产品过滤器 身份证件 产品标识 过滤器id 我想根据访问者正在查看的当前产品的过滤器向他们推荐产品 product_filters表可能包含以下数据 id | product_id | filter_id ====================================== 1 | 1 | 1 2 | 1
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个数量的产品:
最平等
最多相等最少数量的过滤器
最接近的产品-id
上述情况下的顺序为
3,2,5,4
我总是需要x数量的结果
我现在拥有的
计数过滤器的数量,限制为x个结果
计数相等筛选器的数量
我怎样才能组合这些查询,即使没有匹配项,我也总能得到x个结果?我不知道如何通过打开产品1获得统计表中列出的结果。您可以使用更多定义的变量值吗,比如EID prod id filter id 1 a n 2 b o 3 c p。4 d q 5 e r 6 f s 7 g t 8 h u 9我无法使列eo对齐properly@LynneDavidson我在图表中添加了与产品1相同的筛选器id。您好,您想查看哪个结果没有匹配项?看到你从上面问了吗?所有项目?!
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;