gpt4 book ai didi

mysql - SQL获取与另一个产品具有更多共同属性的产品

转载 作者:行者123 更新时间:2023-11-29 00:53:20 25 4
gpt4 key购买 nike

我有如下三个表:

产品

id   |   name
1 | name1
2 | name2
3 | name3

属性

id   |    name    
1 | attr1
2 | attr2
3 | attr3
4 | attr4
5 | attr5
6 | attr6
7 | attr7

attr_rel 建立产品和属性之间的关系

attr_id   |  prod_id
1 | 1
1 | 2
2 | 1
2 | 2
3 | 3
4 | 2
4 | 3
5 | 1
5 | 2
5 | 3

我想要的是执行一个查询,返回所有产品,这些产品按照它们与给定产品共有的属性数量排序。

示例:对于产品 3 查询应该返回类似的内容

id    |    name     |    num_attr_in_common
2 | product2 | 2
1 | product1 | 1

(因为产品 3 与产品 2 共享属性 4 和 5 但仅与产品 1 共享属性 5)

有人可以帮我吗?

最佳答案

select a1.prod_id,p.name,count(*) as num_attr_in_common
from attr_rel as a1
inner join (
select attr_id
from attr_rel
where prod_id = 3) as a2
on a1.attr_id = a2.attr_id and a1.prod_id <> 3
inner join products as p on p.id = a1.prod_id
group by a1.prod_id
order by num_attr_in_common desc

关于mysql - SQL获取与另一个产品具有更多共同属性的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com