日期:2014-05-19  浏览次数:20472 次

浏览过XX商品的人还浏览过XX商品 数据库如何设计?
如题!

浏览过XX商品的人还浏览过XX商品

数据库如何设计?

数据如何统计?

------解决方案--------------------



用 0,1 来区分浏览过 和 未浏览

表1

用户 | 商品1 | 商品2
-----------------------------------------
0001 1 0
0002 0 1
0003 1 1


查询结果:

用户 | 商品
----------------------------------------
0001 商品1
0002 商品2
0003 商品1,商品2



------解决方案--------------------
1、如果商品固定就两种,可以用你的表设计结构,但是如果可能有更多的商品,不建议这样做。
应该设计为:

用户 商品 两个字段做为组合关键字


------解决方案--------------------
---?LZ是否要这样的效果
---创建测试数据
create table 浏览表(UserID int,SpID int)
insert 浏览表 select 1,111
union all select 1,112
union all select 1,113
union all select 2,110
union all select 2,111
union all select 2,113
union all select 3,115
union all select 3,116
union all select 4,118
union all select 5,119
union all select 5,111
union all select 6,120
---创建测试数据
select * from 浏览表
---创建函数
create function dbo.Fn_Test(@UserID int)
returns varchar(8000)
as
begin
declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ', '+cast(SpID as varchar) from 浏览表 where UserID=@UserID
return stuff(@sql,1,1, ' ')
end
go
---调用函数
Select UserID,dbo.Fn_Test(UserID) as SpID from 浏览表 group by UserID
/*
UserID SpID
----------- ---------------
1 111,112,113
2 110,111,113
3 115,116
4 118
5 119,111
6 120

(所影响的行数为 6 行)
*/