1 需求
现需要请向所有用户推荐其朋友收藏但是用户自己未收藏的商品,请从好友关系表(friendship_info)和收藏表(favor_info)中查询出应向哪位用户推荐哪些商品。
- 好友关系表
friendship_info
| user1_id(用户1 id) | user2_id(用户2 id) |
|---|---|
| 101 | 1010 |
| 101 | 108 |
| 101 | 106 |
- 收藏表
favor_info
| user_id(用户id) | sku_id(商品id) | create_date(收藏日期) |
|---|---|---|
| 101 | 3 | 2021-09-23 |
| 101 | 12 | 2021-09-23 |
| 101 | 6 | 2021-09-25 |
- 期望结果
| user_id (用户id) | sku_id (应向该用户推荐的商品id) |
|---|---|
| 101 | 2 |
| 101 | 4 |
| 101 | 7 |
| 101 | 9 |
| 101 | 8 |
| 101 | 11 |
| 101 | 1 |
2 实现
- 思路
初看这个需求还是有些绕的,而且实现过程中需要注意很多细节否则就会导致出错。
主思路是统计出每个用户自己收藏的商品和自己的朋友收藏的商品,然后从中取出朋友收藏的且自己未收藏的商品,用来给自己推荐。需要注意好友关系表中的关系是双向的,与收藏表进行关联时,关联字段的不同拿出来的数据也是不同的。
- 实现
1 查出每个人的朋友都收藏了哪些商品,注意关联字段 user2_id,表示查询朋友收藏的商品
SELECT *
from friendship_info
inner join
favor_info
o

文章介绍了一个从好友关系表和收藏表中查询用户未收藏但其朋友已收藏的商品,以进行个性化推荐的问题。首先,通过SQL联接查询获取朋友收藏的商品,接着通过集合操作找出用户自己未收藏的商品,最后得到推荐列表。
最低0.47元/天 解锁文章
666

被折叠的 条评论
为什么被折叠?



