如何实现“浏览过该页面的人还浏览过...”功能(数据库版)

时间:2022-03-12 06:19:00

思路:先查出该商品有哪些人(IP),然后把这些人(IP)浏览过的商品进行分组统计,把前n个(建议10个以下)的商品列出来。

实现例子

新增1个浏览日志表: 

浏览日志表VisitLog 
用户ID PlayerID 
访问模块ID ModelID
访问时间 VisitTime

 

 

 

 

数据库很简单,难度主要在根据数据库内的记录计算出“浏览此商品的顾客还浏览”的列表! 

以下给出语句并做详细解释。 
查询出模块的ID,模块的访问次数 :

select ModelID ,count(*) as thenum  from 

--from(查询出所有用户id包含在(查询出所有访问过模块abc的用户id)的记录 
--from后的括号内语句得到的结果就是查出来所有访问过模块abc的用户,还访问过那些模块。 

完整SQL语句:

(select * from VisitLog where PlayerID in (select PlayerID from VisitLog where ModelID='abc')) 
--以模块ID分组
group by ModelID
--根据模块的访问次数降序排列
order by thenum desc


通过数据库进行统计,当浏览记录量多的时候,实时查询浏览过的商品会影响性能。建议做优化处理,如可以定期对各商品进行“浏览过...”统计,或使用定时缓存(推荐)。